Testerクラスのmainメソッドが終了したときに、ガベージコレクションの対象となるオブジェクトはいくつありますか?私の印象では、答えは2つ、特にa1、b1です。しかし、私はどこかで正しい答えとして、a1オブジェクトだけが適格であることに気づきました。a2のメンバー変数としてb1を割り当てていないので、メインエンドの前にb1がnullに割り当てられているので、ガベージコレクターによって収集する必要があると思います。何が本当?
class B {
}
class A {
static B b1;
B b2;
}
public class Tester {
public static void main(String[] args) {
B b1 = new B();
B b2 = new B();
A a1 = new A();
A a2 = new A();
a1.b1 = b1;
a1.b2 = b1;
a2.b2 = b2;
a1 = null;
b1 = null;
b2 = null;
}
}