Re: [問題] 請教一道GC題目
※ 引述《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)
討論串 (同標題文章)