在我们的 Windows 2008 R2 64 位服务器上,任务管理器中内存图性能选项卡上显示的数字与进程选项卡上的内存(私有工作集)总和之间似乎存在差异。 前者始终较高。 这种差异似乎与分配给该机器的内存量或机器上的进程数无关。对于我检查过的四台服务器,差异范围从 853 MB 到 4,178 MB。有人能解释一下吗?
答案1
除了进程私有工作集之外,还有许多其他类型的内存也会影响总内存使用量,例如内核分配、映射到系统缓存工作集的页面、已修改列表中的页面等。您可以使用 RamMap.exe (http://technet.microsoft.com/en-us/sysinternals/ff700229.aspx) 来更详细地了解内存中实际的内容。
答案2
任务管理器中的“内存”图表是机器中的总物理内存量减去可用物理内存量。
进程工作集计数器也查看物理内存 - 但仅使用一个物理内存位置的共享 DLL 会被计入使用它的每个进程的工作集 - 因此,工作集会多计算内存。
如果进程将内存分页到磁盘,则这不会包含在工作集计数器中,因此可能导致工作集低估所使用的内存量。
以下是所有计数器映射的列表:http://msdn.microsoft.com/en-us/library/aa965225(VS.85).aspx
这里有一篇非常好的博客文章,详细介绍了一些内容:http://www.itwriting.com/dotnetmem.php