java垃圾搜集的几个疑问

rabbit_zizhu 2008-04-29 10:37:23
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;
...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wensheng_zh2007 2008-04-30
  • 打赏
  • 举报
回复
第一问:没有符合的
第二问:CE
rabbit_zizhu 2008-04-30
  • 打赏
  • 举报
回复
期待更全面的解释
OnJava 2008-04-29
  • 打赏
  • 举报
回复
符合垃圾收集的条件有三个
1.空引用
2.重新为引用变量赋值
3.隔离引用

第一个问题是属于隔离引用:

X2 x2=new X2();
X2 x3=new X2();

x2.x=x3;
x3.x=x2;
两个对象相互引用
x2=new X2();
x3=x2;
使用新引用断开了x2,x3之前的引用
所以有两个满足





KKK2007 2008-04-29
  • 打赏
  • 举报
回复
question1:没有一个符合垃圾搜集条件
question2:AB(这好象答案不唯一)

anqini 2008-04-29
  • 打赏
  • 举报
回复
你这个变量名我都晕了...有x5这个变量名吗?
phyeas 2008-04-29
  • 打赏
  • 举报
回复
第一题: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.所以符合回收条件.小弟愚见.各位大虾指点
rabbit_zizhu 2008-04-29
  • 打赏
  • 举报
回复
第一题:2个
第二题:CE

但是我不理解,请高手讲解下

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧