当前位置: 代码迷 >> J2EE >> 关于垃圾回收的有关问题
  详细解决方案

关于垃圾回收的有关问题

热度:144   发布时间:2016-04-17 23:51:11.0
关于垃圾回收的问题。

public class Tahiti {

Tahiti t;

public static void main(String[] args) {
Tahiti t = new Tahiti();
Tahiti t2 = t.go(t);
t2 = null;
System.out.println(t2);
}

Tahiti go(Tahiti t) {
Tahiti t1 = new Tahiti();
Tahiti t2 = new Tahiti();
t1.t = t2;
t2.t = t1;
t.t = t2;
return t1;
}
}


问题是此过程一共有多少个对象满足垃圾回收的条件? 
答案是 0 个
想问下原因,t2 = null; 之后 t2不满足回收条件吗? 大大路过麻烦指点迷津 希望推荐一下垃圾回收的文章。

------解决方案--------------------
引用:
Quote: 引用:

关键在于go方法,return的那个对象又和入参的t关联,因此即使主方法的t2=null了,但是在t对象里还有这个对象的引用。
画个图来理解吧。


是因为go方法里t2.t还有这个对象的引用?

是因为 t.t=t2;   t2.t=t1; 而这个t,在main方法里还是有引用的。
------解决方案--------------------
总共new了三个对象 t持有了t2  t2持有了t1
所以三个对象都不会被回收
  相关解决方案