kiedy obiekt kwalifikuje się do zbierania śmieci?
rozważ ten przykładowy kod:
1. public class GC {
2. private Object o;
3. private void doSomethingElse(Object obj) { o = obj; }
4. public void doSomething() {
5. Object o = new Object();
6. doSomethingElse(o);
7. o = new Object();
8. doSomethingElse(null);
9. o = null;
10. }
11. }
Kiedy wywoływana jest metoda doSomething, po której linii obiekt utworzony w linii 5 staje się dostępny do zbierania śmieci?
A. Linia 5
B. Linia 6
C. Linia 7
D. Linia 8
E. Linia 9
F. Linia 10
Odpowiedź: D
dlaczego D? prawdą jest, że gdy linia 6 jest wykonywana, obiekt utworzony w wierszu 5 jest teraz wywoływany przez instancję var o i lokalną zmienną o, a gdy wiersz 8 jest wykonywany, do obiektu odwołuje się teraz tylko lokalny ref var o, dlaczego więc odpowiedź jest D i co się dzieje po wykonaniu linii 9? dzięki.