有人问了我一个问题(在此站点http://scjptest.com/上):在此代码示例中,有多少对象符合垃圾回收条件,位于 // some code goes here?
class A {
private B b;
public A() {
this.b = new B(this);
}
}
class B {
private A a;
public B(A a) {
this.a = a;
}
}
public class Test {
public static void main(String args[]) {
A aa = new A();
aa = null;
// some code goes here
}
}
正确答案是:“a 和 b 引用的对象符合垃圾回收条件。”。但为什么?它们包含相互的循环引用,它们可以相互访问。
谢谢!