【问题标题】:Find not disposed IDisposables查找未处置的 IDisposables
【发布时间】:2015-05-07 00:16:49
【问题描述】:

我正在寻找大量代码库中的内存泄漏,因此逐行观察 IDisposable 使用的每个可能位置,而不是放入 using 语句或不被处置不是一种选择。

我目前正在使用 NDepend 与来自此答案 NDepend CQL Query for missing IDisposable implementation 的查询 但这不是我需要的。我需要知道一个对象是否被实例化并且稍后没有被处理。如何在 NDepend 中编写一个可以找到这些对象的查询?或者,如果这不可能,那么如何获取 IDisposable 对象被实例化的位置列表?

【问题讨论】:

  • “要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。”
  • 我建议改用一些内存分析器(Dynatrace、ANTS 内存分析器等)。它比静态代码分析更有效地调试这类问题,不幸的是更好的分析器不是免费的。
  • 好的,我已经把问题改得更具体了
  • @OndrejSvejdar 我使用了 RedGate 和 JetBrains 分析器,发现了一些问题。我现在需要的是确保代码通过一些质量要求。
  • 顺便说一句:未处理的IDisposable 不是内存泄漏。它只是延迟了资源的最终确定。这本身就已经够糟糕的了,但真正的内存泄漏是创建对象并错误地保持引用(可丢弃或不可丢弃)。与跟踪 IDisposables 相比,使用静态检查器检测此类事情可能更不可行。

标签: c# static-analysis idisposable ndepend


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    相关资源
    最近更新 更多