垃圾回收(GC,Garbage Collection)
資源分為托管資源和非托管資源。托管資源由公共語言運作庫處理和回收,無須幹預;而非托管資源則須顯式釋放。
如何釋放非托管資源?
方法有二:
1、析構函數
2、實作IDisable接口
析構函數是在對象被回收時觸發,是以起不到在指定時點釋放的效果;并且可能對性能有負面的影響。因為析構函數會被隐式地翻譯為Finalize()方法,但垃圾回收器在回收時會隻回收沒有Finalize()的記憶體,而将有這個方法的記憶體對象标記為“準備終止”,留待下次回收。
實作IDisable接口的,則比較合理,可以随時調用,顯式釋放。
using(...)方式可以強制調用Disable方法。
GC回收的是垃圾,值類型無須回收,引用類型才需要。沒有被引用的引用類型就是垃圾。