.Net 下的 垃圾回收 Garbage Collector (簡稱 GC)
在 .Net下 記憶體的回收,一般來說都是由 CLR 來決定何時回收,但 測試結果 大多是記憶體快滿的時候才會做回收的動作
在一般的程式,並沒有多大的問題,畢竟吃記憶體的量有限
但如果有做一些 圖形處理的 時候,這就不是一個很好的處理方式 (記憶體有3G,那就代表要滿3G的時候才會清空)
這時候就可以使用 手動的 GC
不過這在網路上的評價 有好有壞,簡單說 使用的人必須很清楚在做什麼
(象 之前一支小程式 可隨意 移動 放大 縮小 的圓)
因為就是一直在重畫,每次都需要一張新的 Bitmap 這樣就非常吃記憶體
這時後來個 GC 就很有用
使用方式
宣告
c#
[SerializableAttribute] public enum GCCollectionMode { };
VB.net
<SerializableAttribute> _Public Enumeration GCCollectionMode
之後在想要的時候 使用
GC.Collect()
進階
GC.Collect( )
GC.Collect( Num )
GC.Collect( Num , System.GCCollectionMode.Optimized )
Num = 0 or 1 or 2
System.GCCollectionMode 有 default , Forced , Optimize
default : 內定
Forced : 立即
Optimiz: 經過演算法後最佳時機 (感覺還是一樣,在要滿的時候才清空)
一直 GC 也不是見好事,如同 DoEvents 一樣。 建議可以設個 Count 來做此動作
參考:
Dispose測試:Dispose時是否立即釋放記憶體