[問題] 資源回收的問題

看板java作者 (〒△〒被水桶了...)時間13年前 (2012/05/12 16:48), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/2 (看更多)
Dear 大家, 這題是 SCJP JAVA 6.0 的習題 @@" 看半天還是不知道為什麼 所以上來請教大家一下 class Beta { } class Alpha { static Beta b1; Beta b2; } public class Tester { public static void main(String[] args) { Beta b1 = new Beta(); Beta b2 = new Beta(); Alpha a1 = new Alpha(); Alpha a2 = new Alpha(); a1.b1 = b1; a1.b2 = b1; a2.b2 = b2; a1 = null; b1 = null; b2 = null; // 做一些事情 } } 當程式執行到"做一些事情",有多少物件有資格被資源回收? A. 0 B. 1 C. 2 D. 3 E. 4 F. 5 答案: B 是正確的。 很清楚的, a2 有指涉到一個物件, a2.b2有指涉到一個物件。 可能比較看不清楚的是, 你仍然可能透過 a2.b1 這個靜態變數來存取另外一個 Beta 物件, 因為那個變數是靜態的。 ... 解答如上所示 但是它沒有交代的是 究竟是那一個變數有資格被資源回收? 所以我一直不是很了解 感謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.167.86.193

05/12 16:56, , 1F
不是 variable 有資格被回收,是 instance 有資格被回收。
05/12 16:56, 1F

05/12 17:01, , 2F
#1EfHKvug 同樣的題目
05/12 17:01, 2F

05/12 20:01, , 3F
畫圖就很容易知道 只要看哪塊記憶體不可能在被參照到
05/12 20:01, 3F
文章代碼(AID): #1FhYFVQL (java)
文章代碼(AID): #1FhYFVQL (java)