可能重复:
记忆棒、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。