我在释放内存时遇到问题。我有一个Hashmap
我正在添加一个Bitmap
,并且位图的数量非常大。出于这个原因,我得到OutOfMemoryError
. 因此,为此我决定在内存紧缩或系统堆内存不足时释放Bitmap
最少使用的内容。Collection
为了获得当前可用的内存,我使用了“ ActivityManager.MemoryInfo.availMem ”,但它给出了总 RAM 大小的内存,而不是可用的堆内存。而且我发现这个内存在从集合中释放位图时没有得到更新。
然后我使用了这三种方法:
Debug.getNativeHeapAllocatedSize()
Debug.getNativeHeapFreeSize()
Debug.getNativeHeapSize()
但我发现 NativeHeapSize 继续增加到某个水平,比如 16 MB,然后OutOfMemoryError
发生变化。在这方面,我发现NativeHeapAllocatedSize
andgetNativeHeapSize
并没有Bitmap
从Collection
.
我该如何解决这个问题?
我的问题是我想计算分配的最大可用应用程序内存和当前可用内存,这样如果当前可用内存超出阈值内存,我将从Bitmap
集合中释放一些内存,垃圾收集将回收内存并释放它而不生成错误。