class TestA {
TestB b; TestA() {
b = new TestB(this);
}
}class TestB {
TestA a;
TestB(TestA a){
this.a = a;
}
}class TestAll {
public static void main(String[] args){
new TestAll().makeThings();
//...code continues on
}
void makeThings() {
TestA test = new TestA();
}
}
这个程序中 在 //...code continues on 这句话之前,变量 a 和 b 都被垃圾回收掉了,请问这是为什么??我不理解

解决方案 »

  1.   

    对象才会被垃圾回收啊而且这里有两个a一个是形参,一个是成员变量
    一个在栈中,一个在堆中形参在方法执行完后就会从栈中回收掉
    而成员变量要在对象被回收时才被回收
      

  2.   

    怀疑相互引用的问题吗?记住垃圾回收不是仅仅采用引用计数方式即可.引用技术算是比较简单和古老的方式了.
      

  3.   

    没有引用,当然要被回收的。对不对啊?
      

  4.   


    这明显是两个对象相互引用
    这样也会被垃圾回收吗?
      

  5.   

    会的 ,你可以写个代码测测。