To pytanie pochodzi z Kathy SierraSCJP 1.6. Ile obiektów kwalifikuje się do zbierania śmieci?Obiekty kwalifikujące się do zbierania śmieci
Według odpowiedzi Kathy Sierra jest to C
. Oznacza to, że dwa obiekty kwalifikują się do zbierania śmieci. Przekazałem wyjaśnienie odpowiedzi. Ale dlaczego c3
nie kwalifikuje się do garbage collection (GC)?
class CardBoard {
Short story = 200;
CardBoard go(CardBoard cb) {
cb = null;
return cb;
}
public static void main(String[] args) {
CardBoard c1 = new CardBoard();
CardBoard c2 = new CardBoard();
CardBoard c3 = c1.go(c2);
c1 = null;
// Do stuff
} }
Kiedy // Do stuff
zostanie osiągnięty, ile obiektów kwalifikują się do GC?
- A: 0
- B: 1
- C. 2
- D: Opracowanie nie
- E: Nie można wiedzieć
- F: jest wyjątek przy starcie
Odpowiedź:
- C jest poprawne. Tylko jeden obiekt CardBoard (c1) jest odpowiedni, ale ma powiązany obiekt opakowujący
Short
, który również kwalifikuje się. - A, B, D, E i F są nieprawidłowe w związku z powyższym. (Cel 7,4)
Ściśle mówiąc "c3" nie może kwalifikować się do GC, ponieważ * nie jest obiektem *. Jest to zmienna, która może wskazywać na obiekt. –
Poprawną odpowiedzią jest [wszystkie] (http://stackoverflow.com/a/26645534/2711488) ... – Holger