And*_*bel 12 .net c# idisposable
在我写的答案的评论中,我们讨论了内存泄漏以及IDisposable我们没有得出任何真正结论的地方.
处理非托管资源的类可能会实现IDisposable.如果忽略它并且既没有调用Dispose也没有包装对象using- 会导致非托管资源被泄露吗?或者,当GC收集物体时,它会被正确清理吗?
我们可以假设处理非托管资源的类具有正确的实现IDisposable,包括终结器等.
Hen*_*man 14
它不会导致内存泄漏.事实上,Dispose与内存管理完全无关.
它会造成资源泄漏.虽然GC通常会清理它,但这可能太罕见而且太晚了.
省略Dispose(using)可能会减慢甚至崩溃你的应用程序.在文件资源或Db连接的情况下,它甚至可能导致其他应用程序出现问题.
我不会导致托管内存泄漏.它可能导致引用的非托管代码泄漏.但它更糟糕的是:现代系统上的内存足够丰富,你可以经常使用一段时间的漏洞.见证Mozilla Firefox:曾经(它仍然?)像筛子一样泄漏,数百万人乐于使用它.
更大的问题是其他资源可能与内存无关.示例包括数据库连接,系统I/O句柄,套接字句柄,文件句柄等.如果您不小心正确使用IDisposable,这些都是您可以在自己的系统上轻松创建拒绝服务情况的所有项目.
| 归档时间: |
|
| 查看次数: |
2106 次 |
| 最近记录: |