为什么我的虚拟机没有使用分配给它的所有内存?

为什么我的虚拟机没有使用分配给它的所有内存?

可能重复:
记忆棒、32 位和 64 位操作系统

我的电脑上有一个 VMWare 虚拟机(主机:Win7 x64,VM:Win7 x86)。主机有 8GB,我为 VM 分配了 4GB,如下面的屏幕截图所示:

替代文本

但是当我进入虚拟机本身时,计算机似乎认为它只有 3 GB - 请参阅任务管理器的屏幕截图:

替代文本

请注意,总物理内存为 3071 GB。我尝试关闭虚拟机并重新启动,但它仍然不使用额外的内存。

另请参阅我的系统屏幕截图: 替代文本

这是 VMWare 的限制吗?还是我需要拨动某个秘密开关?

答案1

通常,32 位操作系统只能看到 4 GB 内存,包括设备(显卡等)。这导致操作系统只能看到 3 GB 的物理内存,即使安装了超过 3 GB 的内存也是如此。对于物理机和虚拟机来说都是如此。

32 位 Windows XP(如 Windows 2003 Server 及更高版本)支持 PAE(物理地址扩展),允许其使用超过 4 GB 的物理内存。由于 Windows XP 中已经存在驱动程序不兼容问题,Windows Vista 和 Windows 7 不再支持 PAE。

因此一般只有 64 位 Windows 支持超过 3 GB 的物理内存,加上支持 PAE 的 32 位 Windows 版本(Windows 2000、Windows XP、Windows Server 2003、Windows Server 2008);而不支持 PAE 的 32 位 Windows 版本(Windows Vista、Windows 7)通常无法看到超过 3 GB 的物理内存。

再次注意,分配给虚拟机的内存算作在虚拟机中运行的操作系统的“物理内存”。

答案2

32 位计算机可能只能处理(参见)3 GB 的 RAM。您的虚拟机可能为其分配了 4 GB,但它只能使用其中的 3 GB。如果您希望使用剩余空间,请在虚拟机中安装 64 位操作系统。

答案3

VM 有可能作为 32 位程序在主机操作系统中运行,以便能够正确支持 32 位客户机。这意味着它受到 32 位限制,因此它可以分配的内存受到 32 位程序的 3GB 虚拟地址空间和 1GB 内核空间限制。

一个关于它的很好的博客:http://blogs.technet.com/b/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx

从该页面开始,您的托管地址空间程序看起来是这样的:

替代文本

并且您的虚拟机将被锁定在 3GB 空间中,因为 32 位程序需要最后的 GB 才能访问主机上的系统驱动程序。

答案4

如果您在 64 位虚拟机上看到这种情况,那是因为某些 VMware 产品(如 ESX/ESXi 和 Workstation)过度使用 RAM到虚拟机。

这样,多个虚拟机运行时分配的 RAM 就比主机实际拥有的 RAM 多。虽然分配给它们的 RAM 过多,但它们实际上只有在真正需要时才会动态地获得 RAM。

相关内容