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;
}
}
问题是此过程一共有多少个对象满足垃圾回收的条件? |
|
|
是因为go方法里t2.t还有这个对象的引用? |
|
10分 |
是因为 t.t=t2; t2.t=t1; 而这个t,在main方法里还是有引用的。 |
10分 |
总共new了三个对象 t持有了t2 t2持有了t1
所以三个对象都不会被回收 |
|
我觉得这是很奇葩的问题,八成是面试官装B用的。 虚拟机进程都结束了还不回收?
<<深入理解Java虚拟机>> 对与垃圾回收机制将的很详细。 |
|
|
楼上说得对,产生几个对象就回收几个。
|
|