来自SCJP测试的问题

时间:2009-12-14 11:46:07

标签: java scjp

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.出了什么问题?

1 个答案:

答案 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。