【发布时间】:2016-01-20 09:34:48
【问题描述】:
我正在经历Java垃圾收集过程和GC适用的不同场景。
以下是我感到困惑的场景:
List<X> listX = new ArrayList<X>();
for(int a = 0;a<100;a++){
listX.add(new X(a));
}
for (X xObject : listX) {
xObject.printValue();
}
在第一个循环中,我在每个循环中添加新对象,而在最新循环中,我只是打印值,那么,我添加到列表中的那些对象是否适用于GC?
这句话是什么意思?
“还有一个很好的例子,说明实例何时可以进行垃圾回收。实例的所有属性都可以存储在寄存器中,然后访问寄存器以读取值。将来不会有这样的情况这些值将被写回实例。虽然这些值将来可以使用,但仍然可以将此实例标记为符合垃圾回收条件"
【问题讨论】:
-
这在很大程度上取决于变量的给定范围和我要说的周围列表的范围。您列表中的条目仍被您的列表引用,因此它们本身不适用于 gc。