作者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
1F:推 sunneo:应该是在没有人参照到他的时候回收 所以是在return之後吧 10/16 03:55
2F:推 wctang:丢了那本烂书吧!其实你不能确定何时会回收的。 10/16 09:27
把原文附上去@@,"eligble for GC"我查单字是说"符合gc",
所以就打成何时"被回收"了,造成大家的误会..不好意思 Orz
※ 编辑: lion1116 来自: 218.164.147.145 (10/16 11:05)