SCJP测试的问题:
class A{
A aob;
public static void main(String args[]){
A a=new A();
A b=new A();
A c=new A();
a.aob=b;
b.aob=a;
c.aob=a.aob;
A d=new A().aob=new A();
c=b;
c.aob=null;
System.gc();
}
}问题:在执行c.aob=null之后,有多少对象有资格进行垃圾收集。
我想是1,但答案2正确。怎么了?
发布于 2009-12-14 12:02:35
我在谷歌上找到了这条线。
第一个对象是最初由c引用的对象。 一个a=新A(); 一个b=新A(); A c= 新A(); a.aob=b; b.aob=a; c.aob=a.aob; 一个d=新的A().aob=new A(); c=b;//(1)它成为符合(1)的条件。 符合GC条件的另一个对象是at语句。 A d=新A().aob=new A(); 在这里,以粗体形式在文本中创建的对象将符合GC的条件。斜体文本中的对象将分配给d。
https://stackoverflow.com/questions/1900443
复制相似问题