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關鍵字進行資源的回收。