Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 抓住从未处理过的刀子_C#_Dispose - Fatal编程技术网

C# 抓住从未处理过的刀子

C# 抓住从未处理过的刀子,c#,dispose,C#,Dispose,因此,作为一名新的.NET程序员,我认为垃圾收集器会一直帮我清理我的垃圾 现在,一年半之后,我在编写代码时遇到了内存不足的异常,当时我不知道必须调用某些资源的dispose。我猜这是因为代码分配了很多没有被处理的位图 我已经通过代码来清理这些,现在我知道了。但我还是少了一些。是否有工具或设置可以看到IDisPobles未被处置 虽然我可以看到编译器或工具很容易捕捉到简单的情况,但我也可以看到一些更复杂的情况很难捕捉到。因此,如果没有我理解的工具,我将继续手工操作。看看FxCop。将捕获实现IDi

因此,作为一名新的.NET程序员,我认为垃圾收集器会一直帮我清理我的垃圾

现在,一年半之后,我在编写代码时遇到了内存不足的异常,当时我不知道必须调用某些资源的dispose。我猜这是因为代码分配了很多没有被处理的位图

我已经通过代码来清理这些,现在我知道了。但我还是少了一些。是否有工具或设置可以看到IDisPobles未被处置


虽然我可以看到编译器或工具很容易捕捉到简单的情况,但我也可以看到一些更复杂的情况很难捕捉到。因此,如果没有我理解的工具,我将继续手工操作。

看看FxCop。将捕获实现
IDisposable
的项,其中未调用
Dispose()

内存探查器将能够向您显示指定类的所有活动对象的分配位置-这可能是一个很好的起点


一些内存探查器现在声称可以跟踪丢失的Dispose()调用,我不知道它们的工作情况如何。

应该在.NET SDK中的一个这样的探查器是CLR探查器。我相信它会在函数调用结束时报告未释放句柄的数量。不要惊慌。只有位图才算数,在代码库中搜索“图像”和“位图”。控件也会这样做,但您可以通过任务管理器很容易看到(永久性)泄漏。这对以后几年都有好处,你可以在方便的时候把剩下的都切掉。@Hans-很高兴知道。谢谢