Re: [問題] 請教一道GC題目

看板java作者 (ha(ruhi|yate)ism)時間17年前 (2007/03/13 12:28), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/9 (看更多)
※ 引述《H45 (!H45)》之銘言: : ※ 引述《LPH66 (ha(ruhi|yate)ism)》之銘言: : : 我的想法是和原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掉是沒問題的 看來我需要搞懂一件事 x到底是個reference還是它是個物件? 如果x是個reference(我目前的觀念) 那就會有我的問題 但如果x是個物件 那原來的答案就沒問題 (因為此時o=obj;變成物件copy 這個o和那個o就無關了) 在C++裡面的話 x是個物件 但這裡是java 而我剛剛測試的結果是像這樣宣告的成員是個reference -- 実琴:「河野!你真的就這樣被物質慾望給吸引過去了嗎?!」 亨:「只要穿著女裝擺出親切的樣子,所有必要花費就能全免,似乎一點都不壞啊。」 実琴:「難道你沒有男人的尊嚴了嗎?!」 亨:(斷然道)「沒有。在節衣縮食生活吃緊學生面前,沒有那種東西。」 --プリンセス・プリンセス 第二話 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 192.192.197.115
文章代碼(AID): #15zYXyPz (java)
討論串 (同標題文章)
文章代碼(AID): #15zYXyPz (java)