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!

questionAnswers(4)

yourAnswerToTheQuestion