Re: [問題] 請問個c#觀念問題
看板C_Sharp (C#)作者fillmore (.......................)時間20年前 (2005/11/11 20:05)推噓0(0推 0噓 0→)留言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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章