.Net的GC垃圾回收機制 為什么要有GC?


C/C++中由程序員進行對象的回收像學校食堂中由學生收盤子,.Net中由GC進行垃圾回收像餐館中店員去回收。

GC是垃圾收集器(Garbage Collection)。程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。GC只能處理托管內存資源的釋放,對於非托管資源則不能使用GC進行回收,必須由程序員手工回收,一個例子就是FileStream或者SqlConnection需要程序員調用Dispose進行資源的回收。

要請求垃圾收集,可以調用下面的方法:GC.Collect()一般不需要手動調用GC.Collect()。當一個對象沒有任何變量指向(不再能使用)的時候就可以被回收了。

 

基礎知識:當沒有任何變量指向一個對象的時候對象就可以被回收掉了,但不一定會立即被回收。

            object obj = new object();//只有new才會有新對象

            Console.WriteLine(obj);

 

            object obj2 = obj;

            obj = null;

            obj2 = null;

            Console.WriteLine();

 

GC是.Net的垃圾收集器,可以進行內存資源的回收,程序員無需關心資源的回收,當一個對象沒有任何引用的時候就可以被回收了。一個對象可以被回收並不意味着一定會被立即回收,GC會選擇時機進行回收。可以調用GC.Collect()讓GC立即回收。GC不能回收非托管資源,對於非托管資源一般都實現了IDisposable接口,然后使用using關鍵字進行資源的回收。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM