.Net Dispose 記憶體釋放

.Net Dispose 記憶體釋放

1. Dispose() 做什
A: 標示自己已經沒有用了,告訴 GC 可以直接把我給回收了,但實際回收也要等 GC 啟動時。

2. Managed resource 沒有執行 Dispose() 會怎樣?
A : Resource 在 GC 回收時,第一時間點就被回收,只是晚點(第N次 GC 啟動時)被回收。

3. 哪些是 Unmanaged Resources
A: 最常見的 Unmanaged 資源類型就是包裝作業系統資源的物件,例如檔案、視窗、網路連接或資料庫連接都屬於這類資源。  雖然記憶體回收行程能夠追蹤封裝 Unmanaged 資源的物件存留期,但是它並不知道如何釋放和清除 Unmanaged 資源。  

4. 用 Dispose 的優點
A: 第一次的GC回收就被回收.

5. Dispose(), finalizer 的差異
A: Dispose() 要 Programmer 程式有寫到. finalizer 是一定會被執行到.

6. 使用 Unmanaged Resources 怎樣釋放
A: 要實作Dispose(), 外加 finalizer。如果沒有就等程式結束才會被釋放。