回答
.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