执行和ArrayList.clear()是否也标记为垃圾收集保留的资源?

时间:2014-02-05 18:41:08

标签: android arraylist bitmap garbage-collection

我有一个Bitmap的ArrayList,它会在for循环的每次迭代中发生变化。当我打电话

ArrayList.clear()

我是否需要拨打电话

ArrayList.get(i).recycle()

清除这些资源,还是将它们标记为常规垃圾收集?

2 个答案:

答案 0 :(得分:2)

就像你说的那样,ArrayList.clear()会将垃圾收集器中的所有项目设置为elegible,而不是列表本身的引用。

例如,如果您有一个包含40个项目的列表,然后生成list.clear(),则会为 GC 设置40个项目,但您将引用一个包含内存大小为40个项目。

如果您想要 GC 处理您的列表,您只需要执行list = null;

希望它有助于澄清你的要求。 :)

答案 1 :(得分:1)

ArrayList.clear()方法隐式地将其所有元素设置为null,这使它们有资格进行垃圾回收。它会有这样的东西

    for(int i = 0; i<size; i++) {
       elementData[i] = null;
    }  

Arraylist在内部将您的对象存储在数组中。