看板 java 關於我們 聯絡資訊
1.class TestA { 2. TestB b; 3. TestA() { 4. b = new TestB(this); 5. } 6.} 7. 8.class TestB { 9. TestA a; 10. TestB(TestA a) { 11. this.a = a; 12. } 13.} 14. 15.class TestAll { 16. public static void main(String args[]) { 17. new TestAll().makeThings(); 18. } 19. 20. void makeThings() { 21. TestA test = new TestA(); 22. } 23.} 請問a在line11有參考了 為什麼會符合garbage collection 如果是因為line21的text消失 那為什麼b沒有失去參考 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.163.89.165
supertitler:makeThings()結束後,程式就無法指到test了吧 01/16 15:32
supertitler:所以當GC運行時,便會釋放test,test中有個b,所以釋 01/16 15:34
supertitler:放test之前,會先釋放b 01/16 15:36
ziyunfts:可是這題的答案是只有釋放ab並沒有釋放 01/16 16:06
PsMonkey:因為自己參考自己? 01/16 16:33
GALINE:要看使用的GC演算法決定吧?且這年頭的GC如不能對付循環參 01/16 16:41
GALINE:照,那大概沒人要用了…[指了指IE的javascript引擎] 01/16 16:42
ziyunfts:題目就只給這樣 然後請問ab哪個符合gc條件 01/16 22:41
GALINE:至少要給GC的演算法跟程式跑到哪裡吧...這題目怪怪的 O_oa 01/16 23:03
ziyunfts:都沒有 所以我也想不出來為什麼 01/16 23:36