關於C#中的記憶體回收

來源:互聯網
上載者:User

標籤:

http://cnn237111.blog.51cto.com/2359144/1343004    GC.Collect如何影響記憶體回收 

主要是

//GC.Collect();//GC.WaitForPendingFinalizers();

 

 

 

http://q.cnblogs.com/q/35019/   C# 給對象賦null值會釋放記憶體嗎?

不一定,這個涉及到GC 記憶體回收機制,具體的回收是由.NET運行時決定的,但是只有對象不再執行任何引用時才會釋放,也就是說你的a=null;只是一個必要條件

當對象一定不再有用的時候GC就可以將對象回收了,判斷一個對象是否一定不再有用的標準就是沒有任何的變數指向它。當一個變數設定為null的時候。
Person p1=new Person(“aa”);//在記憶體中建立了Person對象
Person p2 = p1;//把p2指向p1指向的對象!這一刻p1指向著aa,p2就順著p1找到了lilei
p1=null;//p1不再指向aa。aa不能回收,因此p2還在指著它
p2= new Person(“gaga”);//aa可以回收,因為沒有任何變數指著它。
當沒有任何變數指向aa的時候,就沒法再順著任何的變數把p3指向lilei了。
當一個對象一旦被最後一個指向它的變數拋棄的時候(=null或者變數出了範圍),不可能再有任何變數指向它,它就像斷了線的風箏,再也飛不回來了,因此就可以被回收了。當一個對象找不回來的時候就可以被GC了。

GC類中提供了對GC進行控制、監測的方法,比如GC.Collect()可以強制立即開始進行GC,但是一般不要去手動幹預GC。沒有特殊理由,不要去調用GC.Collect(),讓.net自己決定什麼時候去回收記憶體。

 

關於C#中的記憶體回收

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.