У меня проблема с выпуском памяти. У меня есть Hashmap
, в котором я добавляю Bitmap
, а количество растровых изображений довольно велико. По этой причине я получаю OutOfMemoryError
. Поэтому для этого я решил выпустить Bitmap
, который наименее используется от Collection
, к хрусту памяти или системе, становящимся низким в памяти кучи.Общая доступная память для логики управления памятью
Для получения текущей памяти я использовал «ActivityManager.MemoryInfo.availMem», но при этом дает общую объем памяти RAM, недоступную память кучи. И я обнаружил, что эта память не обновляется при выпуске растровых изображений из коллекции.
Тогда я использовал эти три метода:
Debug.getNativeHeapAllocatedSize()
Debug.getNativeHeapFreeSize()
Debug.getNativeHeapSize()
, но я обнаружил, что NativeHeapSize продолжает расти до некоторого определенного уровня, скажем, 16 МБ , изменяя после что OutOfMemoryError
происходит. В этом также я обнаружил, что NativeHeapAllocatedSize
и getNativeHeapSize
не уменьшается при освобождении Bitmap
от Collection
.
Как решить эту проблему?
Моя проблема заключается в том, что я хочу рассчитать максимальную доступную память приложения и в настоящее время доступную память, так что если доступная в настоящее время память выходит за пределы пороговой памяти, я выпущу из коллекции Bitmap
, а garbage collection вернет память и освободит он не генерирует ошибку.
Возможно, вы захотите взглянуть на это http://developer.android.com/training/displaying-bitmaps/index.html – Michaeldcooney