作者lion1116 (...)
站內java
標題[問題] 關於GC的問題...
時間Tue Oct 16 03:43:22 2007
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)