代码之家  ›  专栏  ›  技术社区  ›  Casual Jim

查找WPF中的内存泄漏

  •  3
  • Casual Jim  · 技术社区  · 15 年前

    语境: 我们正在构建一个快速交付WPF应用程序的框架。这个框架使用autofac作为ioc容器,也使用prism v1中的区域。我们正在用微软的并行扩展来调度任务。

    我们面临以下问题: 当我们用空视图启动应用程序时(所以只是一个带有区域和占位符控件的shell),内存将保持稳定约60秒,此后,它将以每秒4KB的速度增加,然后在8KB之后增加4KB。所以每3秒钟,我们的记忆压力就增加了16kb。

    我们试图找到漏洞的原因。 我从使用dottrace开始,但我看不到相隔30分钟拍摄的两张快照之间有什么不同。 转到.NET内存分析器,因为它提供了更多信息,但我们再次看不到两个快照之间的任何差异。 我们可以看到创建了许多对象,但它们也被删除,结果是增量为0。 所以我转到了windbg,但结果是一样的。

    另一个奇怪的事情是,当我们启动SysInternals DBGVW时,在我们的应用程序中没有看到任何调用。

    你对我们下一步要找出谁是罪魁祸首有什么建议吗?

    2 回复  |  直到 13 年前
        1
  •  0
  •   Community Reversed Engineer    7 年前

    如果您正在查找未经管理的泄漏并使用Visual Studio,则可以使用内置的CRT函数获得令人惊讶的有用信息:

    看见 an answer to a related question

        2
  •  0
  •   Casual Jim    15 年前

    事实证明,这是WPF内部的一个bug,解决方法是创建一个窗口处理程序作为第一个对象或其他东西。 谢谢大家