【问题标题】:Tools for Memory leaks in .Net executable [duplicate].Net 可执行文件中的内存泄漏工具 [重复]
【发布时间】:2011-04-12 17:12:50
【问题描述】:

可能重复:
What Are Some Good .NET Profilers?

我正在尝试在 Windows 中测试应用程序是否存在内存泄漏。我已经查看了 Linux 替代品(例如 Valgrind),并且正在寻找适用于 Windows 的类似工具。 .Net 的问题在于内存不会像 Linux 中那样立即释放。

我对 .Net 的了解有限,所以我的问题是我想使用一种工具来查找 Windows .Net 可执行文件的内存泄漏。理想情况下,该程序应该能够在我使用该应用程序时检测到任何内存泄漏。有谁知道这样的工具或有任何解决此问题的建议?

提前感谢您的帮助。


感谢您的回复。谁能告诉我这些程序是否允许您从命令行执行并将内存泄漏报告输出到文本文件中。

谢谢

【问题讨论】:

    标签: c# c++ visual-studio-2010 memory-leaks memory-management


    【解决方案1】:

    Redgate 有一个不错的内存分析器,您可以下载 here. 它甚至提供 14 天试用期。我用过,很好用。

    【讨论】:

    • @ Lucas B -- 你知道你是否可以使用自动命令行参数运行它并输出到文本文件。
    • 是的,你可以在这里看到:red-gate.com/supportcenter/…
    【解决方案2】:

    其他一些人已经发布了很好的分析器链接——redgate 的分析器特别好。

    这是一篇关于在 .Net 中查找漏洞的好文章的链接:

    http://blogs.msdn.com/b/ricom/archive/2004/12/10/279612.aspx

    这是一个很棒的博客——作者是 MS 的支持工程师(这些人是真正的优秀程序员,他们整天在 windebug 中工作以发现问题)。她的很多文章都是关于追踪内存泄漏的。她的大多数示例都是 asp.net,但大多数技术也应该适用于 Windows 应用程序:

    http://blogs.msdn.com/b/tess/archive/2006/01/23/516139.aspx

    另外,请注意您可能没有真正的泄漏。按照设计,.Net 垃圾收集器不会立即释放内存。它执行由各种事件触发的定期收集(我认为 MS 没有发布会导致垃圾收集器触发的事件的完整列表)。我知道其中一个触发器是内存不足的情况,另一个触发器可以是内存分配。如果没有触发它,GC 将不会收集。

    这意味着您可以启动一个 Winform .net 应用程序,让它吃掉一堆内存(然后释放它),然后让它整夜闲置。如果计算机一直处于空闲状态,则 GC 可能没有触发,并且应用程序仍可能拥有大量内存。当发生触发收集的事情时,内存将被释放。人们经常报告说,由于这种行为,.net 应用程序释放内存的速度似乎很慢。

    继续进行分析 - 您可能有泄漏,但也要注意这可能是设计行为。不管怎样,祝你好运!

    【讨论】:

      【解决方案3】:

      我们已经尝试了很多用于 .NET 的内存分析器并得出结论,.NET memory profiler 是目前市场上最好的,它很好地结合了易用性、可用数据量和性能。

      【讨论】:

        猜你喜欢
        • 2013-12-25
        • 1970-01-01
        • 2016-04-02
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        • 1970-01-01
        • 2014-10-27
        相关资源
        最近更新 更多