C# Dispose Finalize

  比較值得參考的文檔:http://www.jb51.net/article/37214.htm.net

 

.NET 的內存管理過程:指針

  託管堆假設內存無限大,線性連續分配內存;htm

  實際內存不夠使用時,遍歷託管堆對資源,對過時資源進行標記;接口

  移除被標記的資源後對託管堆進行壓縮(從新從頭開始排列),調整堆指針到空閒內存的開頭;內存

另:資源

  垃圾回收主要且微軟推薦讓CLR本身進行,不建議用 GC.Collect 指令;文檔

  要本身負責非託管資源的回收:get

  • Finalize:在 Finalize 內對非託管資源進行回收,以確保 CLR 在內存回收時調用 Finalize 回收非託管資源;
  • Dispose:提供一個顯式的接口,使用Dispose的主要動機在於與 using 的配合,編譯器會自動爲 using 生成 try.finally 塊,編譯器會爲 using 中的變量轉型成 IDispose 並在 finally 調用 Dispose;
相關文章
相關標籤/搜索