close

.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時是否立即釋放記憶體

.NET Framework記憶體回收機制

GCCollectionMode 列舉型別

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Rh 的頭像
    Rh

    程式狂想曲

    Rh 發表在 痞客邦 留言(0) 人氣()