Czy Java GC niszczy obiekty, jeśli zmienne instancji nadal mają odniesienie?
Przeczytałem niektóre z przewodników do usuwania śmieci w Javie online, ale nadal jestem trochę niejasny i chciałem się upewnić, że w moim kodzie nie ma przecieków pamięci.
Czy Java GC zbiera obiekty, które straciły swoje odniesienie, ale jego zmienne nadal mają odniesienie?
Powiedzmy, że mam SomeObject:
public class SomeObject {
public ObjectVar var;
public SomeObject() {
var = new ObjectVar();
}
}
I mój kod:
SomeObject obj1 = new SomeObject();
SomeObject obj2 = new SomeObject();
obj2.var = obj1.var;
obj1 = null;
Tak więc var obj1 ma odniesienie, ale obj1 nie ma już żadnego odniesienia. Czy GC zniszczy obj1, ale zachowa var alive? (Zakładam, że tak, chciałem się tylko upewnić). Dzięki!