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.出了什么问题?
答案 0 :(得分:5)
从谷歌搜索我发现this thread。
第一个对象是c最初引用的对象。
a a = new A();
A b =新A();
A c = 新A();
a.aob = B;
b.aob =一个;
c.aob = a.aob;
A d = new A()。aob = new A();
的 C = B'/强>; //(1)符合资格(1)。
符合GC条件的另一个对象是声明
A d = 新A() .aob = 新A();
此处以粗体显示的文本中的对象将符合GC的条件。斜体文本中的对象将分配给d。