Мой вопрос заключается в том, что говорит комментарий в этом фрагменте кода:
public class A {
int x = 0;
}
public class B {
String text = "a";
A a = new A();
}
public class Test {
public static void main(String[] args) {
A a = null;
if (a == null) {
B b = new B();
a = b.a;
}
// what happens with b inside the if statement now?
// does a still point to b's instance variable?
// what does the garbage collector do in this case?
}
}
Поскольку класс B содержит другую переменную экземпляра с именем text
Мне было интересно, что в этом случае будет делать сборщик мусора. Если b
внутри оператора if не будет собирать мусор и a
по-прежнему будет указывать на переменную экземпляра a
из b
, не будет ли text
тратить пространство памяти тогда?
EDIT :
a
внутри главной функции используется как-то позже и не является недоступным!
Интересная часть - это то, что происходит с b
, потому что a
внутри B
все еще используется, но text
нет.