WPF-应用程序内存泄漏

标签 wpf memory memory-leaks

在 WPF 应用程序中执行某些操作(按下启动一系列计算的按钮)后发生内存泄漏(在任务管理器的虚拟机大小部分中可见)大约 10 MB每次按下按钮后。

计算顺序不包含错误。

内存分析器 (.NET Memory Profiler) 的使用表明 .net 中不存在泄漏,但每次按下按钮后,名称/资源部分中会显示内存大小(标记为HeapMemory)大约增加 10 MB。

我读过有关 WPF 泄漏的帖子,但这些绝对不是我的情况。

可能出了什么问题?有什么建议么?也许有人遇到了同样的问题?

最佳答案

在 .NET 中,看到已用内存的增加是检测内存泄漏的用词不当。

但是,在 WPF 中很容易发生内存泄漏。我建议使用稍微更直观的工具,例如 Redgate Ants Memory Profiler (14 天免费试用)。使用此方法来测试泄漏:

  1. 按一次按钮(耗尽您可能进行的所有热身事件)
  2. 拍摄快照
  3. 再次按下按钮
  4. 拍摄快照

当您转到“类列表”并检查“从当前快照显示:仅新对象”过滤器时。这应该可以让您更好地了解您是否拥有永远不会放开的元素。

Ants Memory Profiler 的另一件事是,它提供了各地视频的链接,指导您如何查找泄漏。追踪泄密有点像魔法,很高兴能得到帮助。

不,我不在 Redgate 工作:)

关于WPF-应用程序内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1406060/

相关文章:

c# - 如何将数据网格记录添加到数据库?

performance - OpenCV 中就地 RGB->BGR 颜色转换较慢

sockets - 在 Metro 中处理套接字创建/销毁时的泄漏

memory - 获取 Yarn 应用程序的内存、CPU 和磁盘使用情况

c - 为什么这会引入内存泄漏?

c++ - 将 std::vector 与类元素一起使用时发生内存泄漏

c# - MVVM 共享属性

c# - 如何在 C# WPF 上为画笔添加十六进制代码?

c# - 透明窗口上的wpf webbrowser

c - 有时会绕过 gcc 内存 Hook 吗?