Re: [問題] 請問個c#觀念問題

看板C_Sharp (C#)作者 (.......................)時間20年前 (2005/11/11 20:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《tomex (tomex_ou)》之銘言: : ※ 引述《fillmore (.......................)》之銘言: : : class Form1 : : { : : Form2 F2; : : public Form1() : : { : : F2 = new Form2(this); : : } : : } : : class Form2 : : { : : Form1 F1; : : public Form2(Form1 ref) : : { : : F1 = ref; : : } : : } : : 請問Form1物件的F2 = null的時候 : : 1.確實在記憶體中有清乾淨嗎?? (因為F2物件裡面有Form1的參考,所以不知道會怎樣) : : 2.如果沒有清乾淨那該如何清理呢? : : 3.或是兩個不同的Form互有對方的參考又該如何清理? : 1. : 假如你已new Form1,它則產生Form1的記憶體(以下簡稱MM)使用,它放Form2, : 而Form2本身只是具有一個Form1的指向,並沒有實際的MM配置。 : 當F2=null時,GC會註記Form2物件的ref count - 1,等ref-count為0時 : 可能立即或等一會兒再回收MM資料 : 2.要確保會立即清乾淨,就是實作Dispose()這介面方法 : 用F2.Dispose() 來代替F2=null。 : 3.不管怎樣的參考,你只要回歸Form1/Form2各自的Ref-Count現值 請問.NET有工具可以隨時觀看 REF-COUNT值嗎? : 就可知道它們的回收狀況。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.71.47
文章代碼(AID): #13T8ZulV (C_Sharp)
文章代碼(AID): #13T8ZulV (C_Sharp)