【问题标题】:How to avoid massive memory leaks on WPF on .Net 3.5?如何避免 .Net 3.5 上 WPF 上的大量内存泄漏?
【发布时间】:2010-11-01 18:04:05
【问题描述】:

当我运行针对 .Net 3.5 的应用程序时,它会出现大量内存泄漏。每次我将 UserControl 分配给本地参考时 50mb。我只为每个 UserControl 创建一个实例。如果我编译并运行针对 .Net 4.0 的相同代码,一切运行良好,徘徊在 50mb 左右。

这是 3.5 的已知问题吗? IE。不能在产品中使用?

/我的客户只有 3.5,暂时不会迁移到 4.0,所以我没有简单的选择

【问题讨论】:

  • 对不起,请解释一下?该代码在 .Net 4.0 上很好
  • 您使用什么来确定内存使用情况?如果是任务管理器,你应该知道用它是非常不准确的。

标签: wpf .net-3.5


【解决方案1】:

WPF 3.5 SP1 的内存泄漏修补程序
http://www.infoq.com/news/2010/06/WPF-Memory-Leaks

特别是看看这两个修补程序,它们已在 .NET 4.0 中修复,但作为修补程序提供给 .NET 3.5 的用户:

http://support.microsoft.com/kb/967634

http://support.microsoft.com/kb/967328

【讨论】:

  • 不错的链接。然而,这些似乎主要是指 WeakReferences 的短期记忆压力。
  • 该死的你这个糟糕的WPF!谢谢,似乎已经解决了这个问题。但我不能要求我所有的客户都应用这些热修复程序。有什么解决方法吗?
  • @DayTwo:我对此表示怀疑;必须部署修复程序。如果您的软件具有自动更新功能,则可以将其合并到其中。
【解决方案2】:

是什么让您认为这是泄漏,而不仅仅是尚未被垃圾回收的内存?您关心的探查器中的数字之外是否有一些影响?如果不是,何必担心。您希望您的程序使用可用内存还是使用 CPU 周期来恢复未使用的对象?

【讨论】:

  • 因为在多次 gui 交互之后会引发 OutOfMemory 异常。 GC 从不回收因此泄漏。
  • 我想看看这样做的代码。与框架相比,它更有可能是代码中的错误……而 4.0 只是更好地处理了该错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 2020-05-13
  • 1970-01-01
  • 2015-08-27
相关资源
最近更新 更多