2008-10-14 97 views
2

在Windows Server 2003企业版,SP2(/ 3GB开关未启用)Windows进程何时内存不足?

据我了解,我可能是错的,对于过程中的最大可寻址内存为4GB。

是2GB的专用字节和2GB的虚拟字节?

当达到专用字节限制或虚拟字节限制时是否出现“内存不足”错误?

回答

4

从某种意义上说,进程的最大地址空间是4GB是正确的。对于每个进程,地址空间的一半由操作系统占用。这可以通过3GB开关进行更改,但可能会导致系统不稳定。因此,我们剩下2GB的可寻址内存供过程自行使用。那么,不完全。事实证明,这个空间的一部分被其他东西占用,如DLL和其他通用代码。作为编程人员可用的实际内存大约为1.5GB - 1.7GB。

我不知道你如何处理不慎会高于这一极限,但我知道的游戏,其坠毁在大型多人地图这个原因。另外要注意的是,除非它们能使/ LARGEADDRESSAWARE 32位程序不能使用超过2GB的地址空间,更多的是64位系统上:YES链接标志。

0

标记Russinovich开始在这一系列的职位.. Pushing the Limits of Windows: Physical Memory

虽然4GB是32的许可限制位客户端SKU,有效限制实际上较低,并取决于系统的芯片组和连接设备。原因是物理地址映射不仅包含RAM,还包含设备内存,x86和x64系统将所有设备内存映射到4GB地址边界以下,以便与不知道如何处理的32位操作系统兼容地址大于4GB。如果一个系统有4GB内存和设备,比如视频,音频和网络适配器,这些设备的内存总和为500MB,那么500MB的4GB内存将位于4GB的地址边界之上。

0

在32位Windows平台上,您只能访问总共2Gb的内存(没有3Gb交换机)。

你可以在64位操作系统上运行32位的多个虚拟机,以便每个应用程序可以访问尽可能多的内存可能的,如果你的机器有超过4GB。

很多人刚刚开始遇到这些障碍,如果您的应用程序使用.net或Java,因为VM在64位操作系统上高兴地达到32Gb内存,我想这会更容易。

0

在32位,如果有足够的物理存储器和用于虚拟内存的磁盘空间,存储器耗尽周围3GB因为内核保留上述0xC0000000的地址空间为本身。在运行64位应用程序的64位内核上,限制为8TB。

有关详细信息,请MSDN - Memory Limits for Windows Releases

0

最大的可寻址内存的32位机为4GB,对于64位计算机可以处理更多的负载。 (虽然一些32位机器有扩展系统可以访问更多,但我认为这不值得打扰或考虑使用)。

达到虚拟限制时出现内存不足错误。在Windows Server 2003上,任务管理器会告诉您标签为“提交费用限额”的性能选项卡上的限制。