测试.NET应用程序中的内存泄漏

时间:2009-07-17 12:18:50

标签: .net memory-management memory-leaks

是否有任何好的(和免费的)工具可用于分析静态源或运行程序以帮助检测内存泄漏?

我已经构建了一些Windows服务,并希望确保不会消耗内存,如果我让它们连续数周运行。

7 个答案:

答案 0 :(得分:2)

不符合您的免费要求,但我认为值得建议的红门有一个 - ANTS Memory Profiler

我之前使用过他们的一些工具(一些是试用的,一些是我们买的)并且发现它们非常好。

答案 1 :(得分:2)

我可以推荐http://memprofiler.com/,但它不是免费的。

答案 2 :(得分:1)

Redgate Ants Performance Profiler可能有所帮助。它不是免费的...但有14天的试用期可能足以让您的服务正常运作。

答案 3 :(得分:1)

让您的服务运行并使用性能监视器来收集有关服务的内存使用情况的信息。此外,如果您使用任何非托管资源,请确保您的代码使用IDisposable正确处理这些资源。在非托管环境中,只需忘记释放指针就可以轻松泄漏,但在托管环境中这是不可能的。但是,如果您继续分配新对象并保留对它们的引用,以便它们不会被垃圾回收,那么您的服务将需要越来越多的内存。

答案 4 :(得分:1)

我使用微软的CLR Profiler取得了一些成功。请务必阅读documentation以获得全部优惠。

答案 5 :(得分:0)

Profile Sharp是.NET的免费(开源)性能和内存分析器

答案 6 :(得分:0)

不要忘记您可以使用Windows任务管理器至少检测服务中是否存在内存泄漏。

使用任务管理器跟踪对象切换到“进程”选项卡的另一种方法,然后转到查看> 选择列并检查用户对象 GDI对象(GDI可能对您没有用,因为您正在运行服务,但其他人可能会找到它是有用的。)