理解垃圾回收平台的基本工作原理
垃圾回收與調試
對托管資源使用終結操作
是什麼導致Finalize方法被調用
終結操作揭秘
Dispose模式:強制對象清理資源
使用實現了Dispose模式的類型
C#的using語句
手動監視和控制對象的生存期
對象復活
代
線程劫持
Internal sealed class SomeType { ~SomeType(){ //這裡的代碼會進入Finalize方法 } }
5. 編譯上述代碼,會發現C#編譯器實際是在模塊的元數據中生成一個名為Finalize的protected override方法。方法主體被放到try塊中,finally塊放入了一個對base.Finalize的調用。
6.實現Finalize方法時,一般都會調用Win32 CloseHandle函數,並向該函數傳遞本地資源的句柄。
4. 像前面一樣,垃圾回收後,第0代的幸存者被提升到了第1代,第1代的幸存者被提升到了第2代,第0代再次空出來,准備迎接新對象的到來。第2代中的對象會經過2次或更多次的檢查。只有在第1代到達預算容量是才會檢查第1代中的對象。而對此之前,一般已經對第0代進行了好幾次垃圾回收。
5. CLR的托管堆只支持三代:第0代、第1代和第2代。第0代的預算約為256KB,第1代的預算約為2MB,第2代的預算容量約為10MB。