回答
.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. Spark是否處理資源管理?
- 4. 清理資源(垃圾回收,使用,IDisposable等)
- 5. 檢測附加的垃圾回收事件處理程序
- 6. .NET垃圾收集器的內部工作原理?
- 7. 垃圾收集器將如何處理會話在ASP.NET MVC
- 8. 處理大圖像時垃圾收集器速度太慢
- 9. 垃圾收集器的事件處理程序
- 10. .Net 4垃圾回收
- 11. 在.NET中發生垃圾回收時是否存在事件?
- 12. IServiceProvider垃圾收集/處置
- 13. .net垃圾回收器何時運行?
- 14. 處理Java程序中的垃圾收集,同時產生大量垃圾
- 15. .NET垃圾收集器
- 16. C#資源處理
- 17. 垃圾回收器回收值類型的內存
- 18. JPA實體管理器資源處理
- 19. 如果事件處理程序處於獨立程序集中,是否停止垃圾回收?
- 20. 我必須處理會話垃圾嗎?
- 21. subprocess.communicate()發送垃圾來處理?
- 22. 垃圾收集器如何確定對象是否是垃圾?
- 23. 垃圾回收閃存
- 24. 瞭解垃圾收集器/ .NET的底層CLR
- 25. PHP中是否有垃圾回收?
- 26. 資源垃圾太早收集
- 27. 閃光燈垃圾收集和處理事件
- 28. 如何/何時收集處理程序垃圾?
- 29. 在Spring批處理ThreadPoolTaskExecutor引用不被垃圾收集
- 30. 垃圾收集如何處理對象引用?
這** **必須是重複的,但我可以的事情這是問題的重複關... – 2010-11-22 11:12:18
可能是重複的,我第一次嘗試在這裏但沒有得到。現在我得到了一些關於CLR內存管理的答案和關鍵字。 – PawanS 2010-11-22 11:26:32