作者willieliao (Willie Liao)
看板java
标题Re: [问题] 请教一道GC题目
时间Tue Mar 13 12:41:01 2007
这是eclipse的debug 跑出来的
第七行(执行完第六行)
this=GC(id=10)
|_
o=Object (id=12)
o=Object (id=12)
第八行(也就是执行完第七行)
this=GC(id=10)
|_o=Object (id=12)
o=Object (id=16)
第九行(执行完第八行)
this=GC(id=10)
|_
o=null
o=Object (id=16)
我支持原po的看法,在第五行新建的物件(id=12)在第八行执行结束之後就没有
变数指向它了
※ 引述《gp20 ()》之铭言:
: public class GC {
: private Object o ;
: private void dosomethingElse(Object obj){o = obj ; }
: public void dosomething() {
: Object o = new Object() ;//第5行
: dosomethingElse(o) ;//第6行
: o = new Object() ;//第7行
: dosomethingElse(null) ;//第8行
: o = null ;//第9行
: }//第10行
: }
: When doSomething method is called, after which line does Object created in
: line 5 become available for garbage collection ?
: 书中给的答案是,第7行後第五行被created的Object才可以被GC
: 但是我觉得是第8行耶
: 因为到第7行的时候产生的Object仍然被GC内的成员o所reference
: 应该要到第8行让它也指向null後,之前产生的Object才能被GC
: 不知道板友们的看法是?
: 谢谢唷…
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 68.49.28.120