我无法跟踪调用垃圾收集器的位置。帮助
class Garbage01
{
public static void main(String args[])
{
Garbage01 h = new Garbage01();
h.methodA(); /* Line 6 */
}
Object methodA()
{
Object obj1 = new Object();
Object [] obj2 = new Object[1];
obj2[0] = obj1;
obj1 = null;
return obj2[0];
}
}
答案 0 :(得分:2)
自动调用java中的垃圾收集,并收集符合垃圾收集条件的对象。
如果对象无法从任何活动线程或任何静态引用中访问,则对象符合垃圾收集或GC的条件,换句话说,如果对象的所有引用都为空,则可以说对象符合垃圾回收条件。
循环依赖关系不计入引用,因此如果对象A具有对象B的引用而对象B具有对象A的引用,并且它们没有任何其他实时引用,那么Objects A
和{{1 }}将有资格获得B
。
因此无法检查何时调用/调用垃圾收集器。
答案 1 :(得分:0)
垃圾收集器从未在methodA()
中调用因为垃圾收集发生在方法返回对对象的引用之后。该方法返回到第6行,没有引用存储返回值。所以垃圾收集发生在第6行之后。