【发布时间】:2013-10-24 22:08:52
【问题描述】:
我在运行我的程序时遇到了这个问题:
- 当我的程序的一项功能正在运行时,内存消耗会迅速增加。
- 我使用性能监视器和虚拟泄漏检测,都说没有泄漏。
- 功能结束后(程序未退出),内存会慢慢下降到正常水平。
- 程序基本上是C#、WPF、C++;
因此,当内存消耗变高时,我的程序驱动的硬件(电机)响应非常缓慢。
我很困惑。这是内存泄漏吗?
我知道可能很难确定问题出在哪里,但是我应该如何看待这个问题有什么共同的逻辑吗?或者有什么常用的工具?就像检查汽车上的进气泄漏/系统倾斜通常从管道、质量空气流量传感器或 O2 传感器开始......
非常感谢!
【问题讨论】:
-
由于您的程序最终确实回收了所有已使用的内存,我会说不,这不是泄漏。您的引用可能被持有的时间超过了必要的时间,这可能会导致您看到的行为。尝试使用像 scitech 这样的内存分析器或类似的东西。
-
但这会引起麻烦。随着程序的运行,硬件响应越来越慢,用户无法忍受。
-
我并不是说这不是问题,但根据给出的信息,任何事情都是猜测。这就是为什么我建议使用内存分析器的原因,您需要先确定是什么占用了内存,然后才能缓解问题。
-
所以如果我的程序包含许多 dll,我是否可以找到哪个 dll 正在泄漏?谢谢。
标签: c# c++ wpf memory-leaks