顯然,根據我正在閱讀的書,這裏的答案是2,但我仍然不明白爲什麼。它說,在行「//做東西」之後,2個對象將符合GC的條件。此Java代碼中有多少對象符合垃圾收集條件?
有人能請一步一步解釋一下嗎?在代碼中的某一行之後,知道有多少對象符合垃圾回收的條件,這有沒有什麼好玩的技巧?因爲我們被告知這些問題(有多少可用於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
}
}
,是的,答案是「2的對象將是eligble進行垃圾回收後再行‘//做的東西’」,但我還是不明白爲什麼。
在此圖像中,它也說,爲什麼答案是2,但該解釋只是做了很多更加混亂我。
Image from the SCJP book we're told to read.
,它甚至沒有解釋發生了什麼其他的對象。
編輯:
那麼根據你們,這是C1和C3有資格GC,我可以看到爲什麼,因爲C1已經被設置爲空,C1.GO(C2)返回null到C3。
但是根據這本書,它只有C1是合格的,答案是2,因爲短包裝。我不知道這是爲什麼,甚至什麼是短包裝對象。
在現實中,'後//做stuff'所有對象符合GC的條件。 – biziclop