[問題] 關於 Garbage Collection
大家好。
詢問的是當程式執行到 第 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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):