通过将元素设置为空来释放数组中的空间



如果数组中有多个位图对象如:

BitmapArray[ Bitmap1 , Bitmap2 ,Bitmap3, Bitmap4, Bitmap5,...]

如果数组变大,这将最终占用大量堆栈空间(或堆空间?)。

我的问题是,现在如果我null位图,我不需要了,这是从堆栈(或堆)释放空间吗?

BitmapArray[ Bitmap1 ,null,null, Bitmap4,null,...]

我不能删除元素和改变数组的大小

如果您不保持任何对位图的其他引用,这可以减少内存使用。如果位图不再被引用,垃圾收集器可以销毁未使用的对象并释放内存。

对于这个位图内存问题,LRUCache (http://developer.android.com/reference/android/util/LruCache.html)是一个不错的解决方案

这是一个有用的工具,以保护您的应用程序从保留太多的内存位图。

但是如果你仍然想使用array - ,记住在将引用设置为null之前在Bitmap上使用.recycle()。在释放内存后也使用System.gc() !

像ArrayList这样的集合

假设bitmapList是您的位图列表,那么您可以使用索引来删除它,如

bitmapList.remove(indexValue);

位图对象存储在堆中。如果数组中的引用为空,并且没有其他引用,则该对象很可能被垃圾收集。

如果你只想谈论数组,可以考虑使用SparseArray。

如果您使用

进行缓存,请考虑使用更好的缓存机制,该机制将考虑位图的大小,以便它永远不会占用太多空间。这种机制可以是LruCache,它也包含在兼容性库和bitmapFun示例中。

最新更新