为什么Windows任务管理器和VMMap显示的内存使用情况不同?

4
我正在分析运行在Windows Server 2003 R2标准版SP2上的使用Delphi7编写的服务器应用程序,需要检查其内存耗尽的情况。任务管理器显示的内存使用和SysInternals VMMap中显示的内存使用不同,为什么呢?是否有建议或链接可以提供?根据帮助文档,任务管理器中的“Mem Usage”是工作集,而“VM Size” 是已提交的内存。因此,在任务管理器中,我有已提交的内存为801MB,但在VMMap中为877MB - 相差76MB的原因是什么呢?请参考下图中的“Mem Usage: Win Task Manager vs VMMap”。

我也很好奇。VMMap甚至显示calc.exe比任务管理器具有更大的私有工作集。 - user145400
你的私人数据似乎很庞大 - 有什么原因吗(寻找我的问题的答案:https://dev59.com/-1wY5IYBdhLWcg3wF0de)? - rb_
我建议观看Mark Russinovich的演讲“揭示内存管理的奥秘”-https://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WCL405 他提到了不同Windows和VMMap上任务管理器之间的一些不兼容性。 - Shrike
1个回答

0
简单的回答:因为它们测量的东西略有不同,或者它们在不同的时间点测量相同的东西(您何时刷新VMMap与任务管理器?)
如果您要以字节级别计算事物,那么任务管理器可能不是一个好的起点。您可能会发现性能监视器更有成果。VMMap对于整体情况也非常有用。
顺便说一句,工作集对于跟踪“内存不足”并不是特别有用的值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接