我有一个Bitmap的ArrayList,它会在for循环的每次迭代中发生变化。当我打电话
ArrayList.clear()
我是否需要拨打电话
ArrayList.get(i).recycle()
清除这些资源,还是将它们标记为常规垃圾收集?
答案 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在内部将您的对象存储在数组中。