我有一台安装了 16GB RAM 的 Windows Server 2008 R2 64bit SP1 机器。如果我打开任务管理器,它会告诉我几乎所有的内存都已满——只是没有。
Total 是正确的,但 Cached、Available 和 Free 的总数似乎并不能反映服务器上实际可用的 RAM 量。这可能是什么原因造成的?
更新 根据@evan-anderson 的建议,我们加载了 RAMMap。它报告“元文件”占用了大量内存。
找到了一篇通过 RAMMap 解释修复的帖子。我这样做了,它似乎正在慢慢释放内存。但是,每隔几天必须这样做似乎有问题。
还发现了一个关于这个问题的服务器故障问题,正在考虑@BeowulfNode42 的解决方案
“Cached”、“Available”和“Free”的总和永远不会加到“Total”中。这是一个很好的博客条目,详细描述了这些数字。
任务管理器告诉您 88% 的物理 RAM 已被占用。您有一些进程(或进程组合)分配了大量内存。
如果您无法追踪哪个进程正在使用它,我想这台服务器很可能在 Hyper-V 或 VMware ESXi(或 KVM 或 Xen)中运行,并且正在发生膨胀。在 Hyper-V 中,这称为动态内存。在其他产品中,它被称为气球。
膨胀期间发生的情况是,当物理主机内存不足而其他客户机需要它时,主机将“膨胀”未充分利用的主机上的气球驱动程序,这导致气球驱动程序看起来消耗内存。这样做是为了确保它可以安全地将那块物理 RAM 重新分配给另一个来宾。检查您的主机资源利用率和动态内存选项。如果您过度使用了 RAM,那么几乎可以肯定这就是正在发生的事情。