所以,作为一名新的.NET程序员,我认为垃圾收集器会一直为我清理我的烂摊子。
现在,一年半之后,当我不知道我必须在某些资源上调用dispose时,我编写的代码中存在内存异常。我猜这是因为该代码分配了许多不会被处理掉的位图...
我已经通过代码来清理它们,因为我知道的更好。但我总是想念一些。是否有工具或设置可以看到IDisposables没有被处置?
虽然我可以看到简单的情况很容易被编译器或工具捕获,但我也可以看到一些非常难以捕获的更复杂的场景。因此,如果没有我理解的工具,并将继续手工操作。
答案 0 :(得分:5)
看看FxCop。 One of its rules会抓住实施IDisposable
的项目,其中Dispose()
未被调用。
答案 1 :(得分:1)
内存分析器将能够显示给定类的所有活动对象的位置 - 这可能是一个很好的起点。
现在有些内存分析器声称跟踪丢失的Dispose()调用, - 我不知道它们的工作情况。