作者H45 (!H45)
看板java
标题Re: [问题] 请教一道GC题目
时间Tue Mar 13 12:09:06 2007
※ 引述《LPH66 (ha(ruhi|yate)ism)》之铭言:
: ※ 引述《Franckie (as simple as possible)》之铭言:
: : 第五行所产生的Object只被 o 所 reference
: : 第七行把 o reference 到另外一个Object
: : 如此一来第五行所产生的Object就没有被reference到
: : 所以就可以被GC了
: 我的想法是和原PO一样
: 如果真的在第七行就能被GC的话
: 那下面这段程式 (我多加两行)
: public class GC
: {
: private Object o;
^^^^^^^^^^^^^^^^^
设这个Object叫作x
: private void dosomethingElse(Object obj){o = obj ; }
: public void dosomething() {
: Object o = new Object() ;//第5行
: dosomethingElse(o) ;//第6行
: o = new Object() ;//第7行
^^^^^^^^^^^^^^^^^^
设这个Object叫作y
: doanotherthing();
: dosomethingElse(null) ;//第8行
: o = null ;//第9行
: }//第10行
: private doanotherthing(){System.out.println(o);} //这里
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这边会印出x
: }
: 我标「这里」的地方到底会印出什麽? 是第五行的物件还是null?
: 如果是第五行的物件的话
: 那假如刚好在跑到这之前这物件就已经被GC掉了 那会发生什麽事?
所以第七行之後y被GC掉是没问题的
--
打太快,修一下...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.205.85
※ 编辑: H45 来自: 140.115.205.85 (03/13 12:10)