看板 java 關於我們 聯絡資訊
01. public Object m(){ 02. Object o = new Float(3.14f); 03. Object[] oa = new Object[1]; 04. oa[0] = o; 05. o = null; 06. return oa[0]; 07. } When is the Float object, created in line 02, eligble for GC ? 答案:05. 而下面是小弟按照書上的觀念畫的圖, 從書上寫的關於gc的部份,是說將不使用的記憶體回收, o 所指向的記憶體,雖然 o 在05.變成了 null, 但是在04.時 oa[0] 不也指向了相同的記憶體位址嗎? 那這樣不就只有03.所產生的記憶體被回收了? 關於gc的觀念有點混亂...煩請各位先進指引一下...@@ ===================================== ┌─┐ ┌────────┐ 02. │o │→│new Float(3.14f)│ └─┘ └────────┘ ===================================== ┌─┐ ┌───────┐ 03. │oa│→│new Object[1] │ └─┘ └───────┘ ===================================== ┌─┐ ┌────────┐ 04. │o │→│new Float(3.14f)│ └─┘ └────────┘ ┌─┐↗ ┌───────┐ │oa│ │new Object[1] │→ GC └─┘ └───────┘ ===================================== ┌─┐ 05. │o │→ null └─┘ ┌─┐ ┌────────┐ │oa│→│new Float(3.14f)│ └─┘ └────────┘ ===================================== -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.147.145
sunneo:應該是在沒有人參照到他的時候回收 所以是在return之後吧 10/16 03:55
wctang:丟了那本爛書吧!其實你不能確定何時會回收的。 10/16 09:27
把原文附上去@@,"eligble for GC"我查單字是說"符合gc", 所以就打成何時"被回收"了,造成大家的誤會..不好意思 Orz ※ 編輯: lion1116 來自: 218.164.147.145 (10/16 11:05)