在 WPF 应用程序中执行某些操作(按下启动一系列计算的按钮)后发生内存泄漏(在任务管理器的虚拟机大小部分中可见)大约 10 MB每次按下按钮后。
计算顺序不包含错误。
内存分析器 (.NET Memory Profiler
) 的使用表明 .net 中不存在泄漏,但每次按下按钮后,名称/资源部分中会显示内存大小(标记为HeapMemory)大约增加 10 MB。
我读过有关 WPF 泄漏的帖子,但这些绝对不是我的情况。
可能出了什么问题?有什么建议么?也许有人遇到了同样的问题?
最佳答案
在 .NET 中,看到已用内存的增加是检测内存泄漏的用词不当。
但是,在 WPF 中很容易发生内存泄漏。我建议使用稍微更直观的工具,例如 Redgate Ants Memory Profiler (14 天免费试用)。使用此方法来测试泄漏:
- 按一次按钮(耗尽您可能进行的所有热身事件)
- 拍摄快照
- 再次按下按钮
- 拍摄快照
当您转到“类列表”并检查“从当前快照显示:仅新对象”过滤器时。这应该可以让您更好地了解您是否拥有永远不会放开的元素。
Ants Memory Profiler 的另一件事是,它提供了各地视频的链接,指导您如何查找泄漏。追踪泄密有点像魔法,很高兴能得到帮助。
不,我不在 Redgate 工作:)
关于WPF-应用程序内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1406060/