跟踪WPF中的内存泄漏

时间:2009-04-29 09:25:40

标签: c# wpf memory-leaks prism autofac

上下文: 我们正在构建一个快速交付WPF应用程序的框架。该框架使用Autofac作为IoC容器,并使用Prism v1中的区域。我们正在使用Microsoft的并行扩展来安排任务。

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

我们试图追踪泄漏事件。 我从使用dotTrace开始,但我看不到相隔30分钟拍摄的2张快照之间的任何差异。 转移到.NET内存分析器,因为它给了我更多信息,但我们再也看不到2个快照之间的任何差异。 我们可以看到创建了许多对象,但它们也被删除并导致delta为0。 所以我转向了windbg但结果是一样的。

另一个奇怪的事情是,当我们启动sysinternals dbgvw时,我们看不到在我们的应用程序中进行任何调用。

你有什么建议我们可以尝试下一步找出什么/谁是罪魁祸首?

2 个答案:

答案 0 :(得分:0)

如果您正在寻找非托管泄漏并使用visual studio,您可以使用内置的crt函数获得令人惊讶的有用信息:

请参阅an answer to a related question

答案 1 :(得分:0)

事实证明这是WPF中的一个错误,解决方法是创建一个窗口处理程序作为第一个对象或其他东西。 谢谢你们