突然过多的内存使用量

时间:2010-02-19 14:20:19

标签: .net winforms multithreading memory-leaks

我遇到一个问题,我的应用程序运行好几个小时,然后突然增加内存使用(在几分钟内),直到它崩溃。如果我们在增加的内存使用期间最小化应用程序,内存会下降并保持一段时间。这似乎非常不一致。知道如何解决它/原因可能是什么?

3 个答案:

答案 0 :(得分:2)

有很多工具可以帮助您检测出这类问题。试试ANTS Memory ProfilerWinDbg + SOS

ANTS允许您拍摄快照并进行比较。这将帮助您发现占用额外内存的内容。

WinDbg允许您检查堆。 !dumpheap命令很有用。查找意外数量的实例。要检查GC不回收对象的原因,请使用!gcroot命令。在Tess' blog获取战利品以获取有关WinDBg + SOS的更多信息。

答案 1 :(得分:1)

如果您在最小化应用程序的主窗口时看到它显着减少,那么您正在查看错误的内存诊断。这是工作集,即映射到RAM的虚拟内存量。工作集始终是可变的,它很大程度上取决于其他进程正在运行的内容,并且需要将自己的页面映射到RAM。当应用程序耗尽免费虚拟内存时,应用程序会在OOM上发生爆炸,这是一个完全不同的数字。

是的,使用一个好的内存分析器,以避免得出无法帮助您诊断问题的结论。

答案 2 :(得分:0)

你必须得到一个内存攻击/调试器来缩小研究范围