Kiedy Garbage Collector może usunąć obiekt (pytanie z SCJP)

0

Pytanie z książki do SCJP:

user image

http://img848.imageshack.us/img848/7588/skanv.png

Rozumiem, dlaczego c1 można usunąć GC, ale dlaczego c3 nie będzie usunięty (w końcu też zostanie przypisany null)?

1

Co rozumiesz przez "obiekt c3"? Były utworzone tylko dwa obiekty, do jednego referencję trzymało przez chwilę c1, do drugiego referencję trzyma c2, w c3 był zawsze tylko i wyłącznie null.

0

Krótka piłka: GC może zebrać obiekt tylko wtedy, gdy nie można się do niego w żaden sposób dostać. Zmienne w Javie dzielą się na prymitywy i referencje. Prymitywy nie są obsługiwane przez GC, zbierane są razem z obiektem rodzicem. Jeśli chodzi o referencje to może być dowolnie wiele referencji do jednego obiektu i GC nie może usunąć obiektu dopóki istnieje chociaż jedna referencja do niego.

0

Wielkie dzięki za błyskawiczne odpowiedzi.

Faktycznie po obiekcie c3 nie ma GC co sprzątać. ; )

1
fantazyn napisał(a)

Rozumiem, dlaczego c1 można usunąć GC, ale dlaczego c3 nie będzie usunięty (w końcu też zostanie przypisany null)?

A gdzie w tym kodzie jest tworzony obiekt c3 przez new Cardboard() ??

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0