-1

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

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

2 回答 2

2

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

如果对象无法从任何活动线程或任何静态引用访问,则该对象有资格进行垃圾收集或 GC,换句话说,如果对象的所有引用为空,则可以说该对象有资格进行垃圾收集。

循环依赖不计为引用,因此如果对象 A 具有对象 B 的引用并且对象 B 具有对象 A 的引用并且它们没有任何其他实时引用,那么两者都Objects AB有资格获得Garbage collection.

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

于 2013-05-08T12:23:55.687 回答
0

垃圾收集器从未在 methodA() 中调用

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

于 2013-05-08T12:12:38.517 回答