我不确定我是否完全理解了垃圾收集器的行为,因此我根据上一个问题提出这个问题。
在这个程序中:
class A {
Boolean b;
A easyMethod(A a){
return new A();
}
public static void main(String [] args){
A a1 = new A();
A a2 = new A();
A a3 = new A();
a3 = a1.easyMethod(a2);
a1 = null;
// Some other code
}
}
有多少对象有资格进行垃圾收集?我认为虽然a3
永远不会变为 null,但new A()
分配给它的第一个对象 ( ) 也应该被垃圾回收,因为没有引用仍然指向它。我对吗?因此,我认为正确的答案将再次是 2 个对象。实际上什么是真的?