垃圾收集器被调用的最大可能性在哪里?

时间:2013-05-08 12:10:17

标签: java garbage

我无法跟踪调用垃圾收集器的位置。帮助

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]; 
} 
}

2 个答案:

答案 0 :(得分:2)

自动调用java中的垃圾收集,并收集符合垃圾收集条件的对象。

如果对象无法从任何活动线程或任何静态引用中访问,则对象符合垃圾收集或GC的条件,换句话说,如果对象的所有引用都为空,则可以说对象符合垃圾回收条件。

循环依赖关系不计入引用,因此如果对象A具有对象B的引用而对象B具有对象A的引用,并且它们没有任何其他实时引用,那么Objects A和{{1 }}将有资格获得B

因此无法检查何时调用/调用垃圾收集器。

答案 1 :(得分:0)

垃圾收集器从未在methodA()

中调用

因为垃圾收集发生在方法返回对对象的引用之后。该方法返回到第6行,没有引用存储返回值。所以垃圾收集发生在第6行之后。