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


2

可能重复:
内存条,32位和64位操作系统

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

替代文字

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

替代文字

请注意总物理内存为3071 GB。我已经尝试关闭VM并重新启动,但它仍然没有使用额外的内存。

另见我的系统屏幕截图: 替代文字

这是VMWare的限制吗?或者是否需要翻转一些秘密开关?


1
据我所知主机是x64,但你没有提到有关VM(OS / 32或64位)的任何内容
Siim K 2010年

@Siim K:32位 - 请看我的编辑
Shaul Behr 2010年

2
我知道这是关于虚拟机,但基本上是相同的旧的“我的32位计算机没有使用其所有内存”已回答问题,很多时候,它并不重要主机是64位的,客人是32位并且无论你做什么都不会正确使用所有最后一

Answers:


7

通常,32位操作系统只能看到4 GB的内存,包括设备(显卡等)。这导致操作系统看到3 GB的物理内存,即使安装了3 GB以上。这适用于物理机和VM。

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

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

再次注意,分配给VM的内存计为VM中运行的OS的“物理内存”。


+1这是一个很好的解释,非常有趣的信息 - 谢谢你帮助我理解!
Shaul Behr 2010年

8

32位机器只能解决(见)3 GB的内存。您的VM可能会授予它4 GB,但它只能使用3 GB。如果要使用剩余空间,请在VM中安装64位操作系统。


这种限制仅适用于虚拟机吗?当我在我的主机上安装了Win XP(32位)时,它使用的是全部4 GB ...?
Shaul Behr 2010年

@Shaul:这没有多大意义,只有Windows 7 32bit可以处理超过3GB。
the_drow 2010年

@the_drow:这与@Zack在这里说的相矛盾 - 即使是Win7 32位也无法处理超过3GB的内容。根据你的说法,为什么我的Win7 x86 VM无法处理4GB?
Shaul Behr 2010年

@Shaul:至少我从工作场所的IT部门那里了解到的。但一般来说Zack是对的,它可能是VM问题。
the_drow 2010年

@the_drow:你的意思是'只有Windows 64位可以处理3GB以上'。实际上,数量随机器而变化,因为硬件需要一些4GB可寻址存储空间。
paradroid 2010年

3

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

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

从该页面,您的托管程序的地址空间如下所示:

替代文字

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


VM是否在使用/ 3GB开关的Windows系统上运行?
Andrew J. Brehm 2010年

@Andrew,不一定。对于在64位Windows上运行的32位应用程序,它们需要32位环境和地址空间。Windows将32位和64位系统分开,而32位进程(如VM)可能会看到如上所述的4GB内存映射(其中vitrual计算机处理其设备的1GB插槽),而64位进程会看到更大的地址空间。如果您想了解Windows虚拟内存和64/32位问题,请参阅blogs.technet.com/b/markrussinovich/archive/2008/11/17/...
Mokubai

1

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

这允许多个VM运行时分配给它们的RAM多于主机实际拥有的RAM。虽然RAM过度使用,但它们实际上只在实际需要时才动态接收RAM。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.