java垃圾搜集的几个疑问
question1:
class X2{
   public  X2  x;
   public  static void main(String[] args){
           X2 x2=new X2();
           X2 x3=new X2();
           x2.x=x3;
           x3.x=x2;
           x2=new X2();
           x3=x2;
   }
}
问:有几个符合垃圾搜集条件?
question2:
X3 x2=new X3();
X3 x3=new X3();
X3 x5=x3;
x3=x2;
X3 x4=x3;
x2=null;
//insert code
问:在//insert code处插入哪两行,可以使一个对象符合垃圾搜集条件?(选2个)
A   x3=null;
B   x4=null;
C   x5=null;
D   x3=x4;
E   x5=x4;
------解决方案--------------------第一题:2个。第一次在x3=x2;这里。将x2的引用附给x3。那么原来的x3的引用就被丢弃。第二次在:x2=null; 这里。
第二题:CE,C   x5=null;这个不解释了。解释下E。x5=x4; x4是x3的引用。x3保存的是x2的引用(相对应的代码  x3=x2;
X3 x4=x3;),而X2又被设置为null.所以符合回收条件.小弟愚见.各位大虾指点
------解决方案--------------------question1:没有一个符合垃圾搜集条件
question2:AB(这好象答案不唯一)
------解决方案--------------------符合垃圾收集的条件有三个
1.空引用
2.重新为引用变量赋值
3.隔离引用
第一个问题是属于隔离引用:
         X2 x2=new X2();  
         X2 x3=new X2();  
         x2.x=x3;  
         x3.x=x2;  
两个对象相互引用
         x2=new X2();  
         x3=x2;  
使用新引用断开了x2,x3之前的引用
所以有两个满足
------解决方案--------------------第一问:没有符合的
第二问:CE