如何在.net应用程序中查找内存泄漏的原因

如何在.net应用程序中查找内存泄漏的原因,.net,memory-leaks,.net,Memory Leaks,我有一个.net应用程序作为windows服务运行。有时它会使用1GB+的RAM开始内存泄漏。如何找到内存泄漏的原因?有哪些工具以及如何使用它们?我使用了SOS extesion,并成功地调试了.NET应用程序中的MemoryLeak 看一看,然后开始。我还建议您提供有关使用WinDbg调试.NET的更多信息,以及成功调试.NET应用程序中内存库的SOS扩展 看一看,然后开始。我还建议您了解有关使用WinDbg调试.NET的更多信息,您可以从这里开始:该工具是免费的,过去它适用于mr,即使它不容

我有一个.net应用程序作为windows服务运行。有时它会使用1GB+的RAM开始内存泄漏。如何找到内存泄漏的原因?有哪些工具以及如何使用它们?

我使用了SOS extesion,并成功地调试了.NET应用程序中的MemoryLeak

看一看,然后开始。我还建议您提供有关使用WinDbg调试.NET的更多信息,以及成功调试.NET应用程序中内存库的SOS扩展


看一看,然后开始。我还建议您了解有关使用WinDbg调试.NET的更多信息,您可以从这里开始:该工具是免费的,过去它适用于mr,即使它不容易使用。也有商业选项,但从未使用过。

您可以从这里开始:该工具是免费的,过去它对mr有效,即使它不容易使用。也有商业选项,但从未使用过。

在类似的情况下,我会选择Ants memory profiler或类似的工具,检查分配的对象的数量是否超过预期。我特别关注表单和其他绑定了事件的对象。这有时为泄漏涉及的对象提供了一个良好的开端。从那里,通常的检测工作是找出这些对象的隐藏引用。

在类似的情况下,我会使用Ants memory profiler或类似工具,检查分配的对象的数量是否超过预期。我特别关注表单和其他绑定了事件的对象。这有时为泄漏涉及的对象提供了一个良好的开端。从那里,通常的侦查工作就是找出那些物体的隐藏参考。

我用过一次,它帮助我解决了我的问题。正如Felice所说,也可以使用一些免费工具

大多数情况下,您的内存泄漏都是来自未经处理的对象。尝试将所有连接包装到using块中。如果您是任何COM+对象,例如GDI+对象-位图等,请在使用完它们后始终调用Dispose。此外,忘记注销事件处理程序会消耗大量内存。

我曾经使用过一次,它帮助我解决了问题。正如Felice所说,也可以使用一些免费工具


大多数情况下,您的内存泄漏都是来自未经处理的对象。尝试将所有连接包装到using块中。如果您是任何COM+对象,例如GDI+对象-位图等,请在使用完它们后始终调用Dispose。此外,忘记注销事件处理程序会消耗大量内存。

我建议使用Scitech的.NET memory Profiler来查找.NET应用程序中的内存泄漏。

我建议使用Scitech的.NET memory Profiler来查找.NET应用程序中的内存泄漏。

安装时,您有多少可用内存是这样的吗?它是否曾经在那时耗尽内存?@Lasse,事实上,我有各种各样的服务,随着内存消耗的增加,它们开始阻碍服务器。因此,是的,服务器确实内存不足。当它这样做时,您有多少可用内存,以及它是否在那时内存不足?@Lasse,事实上,我有各种各样的服务,随着内存消耗的增加,这些服务开始阻塞服务器。因此,是的,服务器确实内存不足。