回答
.Net GC只管理放置在託管堆上的對象,即託管對象。這些託管對象可能會導致訪問非託管對象,如數據庫連接或文件句柄等。開發人員需要通過實現IDisposable或Finalize來釋放這些資源,具體取決於您的需要。
MSDN指出:
A類必須實現最終確定時,它 使用非託管資源,如文件句柄 或數據庫連接時使用它們的管理 對象被回收該 必須被釋放。 請參閱IDisposable接口,瞭解如何配置 補充資源和更可控的 資源配置方式。
這裏的鏈接是相同的:http://msdn.microsoft.com/en-us/library/system.object.finalize.aspx
不,使用Finalize不是釋放非託管對象的正確方法。你應該使用IDisposable接口。 – Guffa 2010-11-22 11:08:31
如果您想使用確定性處置 - 使用IDisposable接口。你永遠不知道什麼時候你的終結者將被稱爲 – ppiotrowicz 2010-11-22 11:11:23
同意。我的錯。最佳實踐表明,應儘可能使用IDisposable。 – 2010-11-22 11:20:30
GC只處理被管理對象。
所有非託管資源需要進行手工處理:
- 在使用非託管資源的任何類型的落實
IDisposable
接口。 - 確保在完成使用實現
IDisposable
的任何對象時調用Dispose
方法。這通常通過使用using
塊來完成。
Thanx你可以建議任何鏈接.. – PawanS 2010-11-22 11:10:29
http://msdn.microsoft.com/en-us/magazine/cc163392.aspx – ppiotrowicz 2010-11-22 12:06:56
- 1. .net垃圾回收和管理資源
- 2. 是否有任何不受垃圾回收處理的對象?
- 3. C++ Box2d內存管理/垃圾回收
- 4. Java垃圾收集器是否清理堆棧內存?
- 5. 圖像處理呼叫垃圾收集
- 6. .NET垃圾回收器
- 7. Spark是否處理資源管理?
- 8. 我怎麼處理垃圾?
- 9. 清理資源(垃圾回收,使用,IDisposable等)
- 10. 垃圾處理器何時執行?
- 11. 將垃圾回收處理列表的值列表
- 12. 檢測附加的垃圾回收事件處理程序
- 13. 垃圾回收如何處理集合對象?
- 14. Javascript中的事件處理程序,閉包和垃圾回收
- 15. .NET垃圾收集器的內部工作原理?
- 16. .Net 4垃圾回收
- 17. 如何處理擴展其他資源的資源
- 18. 在.NET中發生垃圾回收時是否存在事件?
- 19. 處理大圖像時垃圾收集器速度太慢
- 20. 垃圾收集器的事件處理程序
- 21. 垃圾收集器將如何處理會話在ASP.NET MVC
- 22. CLR垃圾收集器頻率和系統內存可用
- 23. IServiceProvider垃圾收集/處置
- 24. 不理解內存使用情況/垃圾回收
- 25. .net垃圾回收器何時運行?
- 26. .NET垃圾收集器
- 27. 處理Java程序中的垃圾收集,同時產生大量垃圾
- 28. C#資源處理
- 29. RAII資源處理
- 30. JPA實體管理器資源處理
這** **必須是重複的,但我可以的事情這是問題的重複關... – 2010-11-22 11:12:18
可能是重複的,我第一次嘗試在這裏但沒有得到。現在我得到了一些關於CLR內存管理的答案和關鍵字。 – PawanS 2010-11-22 11:26:32