通过将element设置为null来释放数组中的空间?

时间:2012-12-25 18:46:12

标签: java android arrays

如果我在数组中有很多位图对象  例如:

BitmapArray[ Bitmap1 , Bitmap2 ,Bitmap3, Bitmap4, Bitmap5,...]
如果数组变大,这将最终占用大量的堆栈空间(或堆空间?)。

我现在的问题是,如果我将Bitmaps归零,我不再需要它,这是从堆栈(或堆)中释放的空间吗?

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

我无法移除元素并更改数组大小btw

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

这个位图内存问题很好看的解决方案是LRUCache(http://developer.android.com/reference/android/util/LruCache.html)

这是保护您的应用免于为位图预留太多内存的有用工具。

但是如果您仍然想要使用数组 - 请记住在Bitmap上使用.recycle(),然后再将引用设置为null。在释放内存后也使用System.gc()!

答案 2 :(得分:0)

借助像ArrayList这样的Collection

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

bitmapList.remove(indexValue);

答案 3 :(得分:0)

位图对象存储在堆上。如果在数组中引用为null并且没有其他引用,则该对象可能是垃圾回收。

答案 4 :(得分:0)

如果您只想谈论数组,请考虑使用SparseArray

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