Reputation:
In my game, I have a bitmap image which functions as the games background (drawn on a canvas). The bigger the image the more "space" there is in the game for the user to move in, so I want the bitmap to be as big as possible without causing memory problems.
Well I went overboard and drew an enormous bitmap, which caused an out of memory error immediately on initialzation, so I shrunk the bitmap a bit. But I think its too small. My question is how can I measure the "safe" limit of the memory being used?
I used the following methods and read the output in CatLog:
Debug.getNativeHeapAllocatedSize();
Log.v("MEMORY",String.valueOf(Debug.getNativeHeapAllocatedSize()) );
Log.v("FreeMEMORY",String.valueOf(Debug.getNativeHeapFreeSize ()) );
The results of which were:
05-25 09:53:54.044: VERBOSE/MEMORY(23044): 9715624
05-25 09:53:54.044: VERBOSE/FreeMEMORY(23044): 61528
The free memory seems quite small? Is this cutting close to the bone?
Upvotes: 0
Views: 2649
Reputation: 8014
If you are shrinking bitmap then also first it gets loaded into memory and eventually gives you error.
You need to use something called as BitmapFactory.Options
which precalulates before loading the bitmap.
Refere to this question's maximum voted answer.
Upvotes: 1
Reputation: 4921
re size your image using sampling and store images in file in sdcard it would be better
Upvotes: 1