[問題] 關於 Garbage Collection

看板java作者 (mserway)時間14年前 (2011/10/24 14:36), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/3 (看更多)
大家好。 詢問的是當程式執行到 第 18 行,有多少個物件有資格被資源回收(GC)。 3. class Beta {} 4. class Alpha { 5. static Beta b1; 6. Beta b2; 7. } 8. public class Tester { 9. public static void main(String [] args) { 10. Beta b1 = new Beta(); 11. Beta b2 = new Beta(); 12. Alpha a1 = new Alpha(); 13. Alpha a2 = new Alpha(); 14. a1.b1 = b1; 15. a1.b2 = b1; 16. a2.b2 = b2; 17. a1 = null; b1 = null; b2 = null; 18. // do stuff 19. } 20. } 此題為 "SCJP 6 專業認證手冊" 的題目,第284頁 第11題 解答為 "只有一個物件" 有資格被資源回收。 解釋如下3點 : 1) a2 有指涉到一個物件; 2) a2.b2有指涉到一個物件; 3) 仍然可能透過 a2.b1 這個靜態變數來存取另一個 Beta 物件。 我的問題是 : 哪個物件有資格被資源回收? a1 或是 b1 指涉的物件? b1 原先指涉的 Beta 物件可否被 a1.b1 (靜態變數)存取? 覺得自己在這部分上有盲點,希望有興趣的朋友可以給予一點幫助~ 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.113.154
文章代碼(AID): #1EfGTcR9 (java)
文章代碼(AID): #1EfGTcR9 (java)