Windows Server 任务管理器显示的内存使用量远高于所有进程的工作集大小的总和

5 windows-server-2008 virtual-memory memory-usage sql-server-2008

我有一台 16 GB 的 Windows Server 2008 x64 机器,主要运行 SQL Server 2008。在任务管理器中看到的可用内存非常低(目前为 128 MB),即使用了大约 15.7 GB。到现在为止还挺好。

现在,当我尝试使用最多的内存缩小进程的范围时,我感到困惑:任务管理器的“进程”选项卡中显示的所有进程都没有超过 200MB 的工作集大小。好吧,也许工作集大小不是相关的计数器?

为了弄清楚这一点,我使用了一个 PowerShell 命令 [1] 以一种蛮力方法来总结进程对象的每个单独的属性 - 当然其中一个必须加起来达到 15.7 GB,对吗?结果发现它们都没有,最接近的是 VirtualMemorySize(大约 12.7 GB)和 PeakVirtualMemorySize(大约 14.7 GB)。跆拳道?

换句话说:众多与内存相关的进程信息中的哪一个是“正确的”,即计入任务管理器的“性能”选项卡中显示的服务器物理内存?

谢谢你们!

[1] $erroractionpreference="silentlycontinue"; 获取进程| 通用 | where-object {$ .membertype -eq "Property"} | foreach-object {$ .name; (get-process | measure-object -sum $_.name ).sum / 1MB}

小智 1

将所有进程的内存使用量相加通常不会产生有意义的结果。这将导致内存的两个主要用户下落不明:系统缓存和备用列表。您不能通过简单地添加数字列表来计算内存使用情况。内存管理系统对此来说太复杂了。