【问题标题】:Can a 32-bit program use more than 4GB of memory on a 64-bit OS?32 位程序能否在 64 位操作系统上使用超过 4GB 的内存?
【发布时间】:2011-08-20 11:48:19
【问题描述】:
在 64 位操作系统上运行的 32 位程序是否能够使用超过 4GB 的内存(如果可用)?
【问题讨论】:
-
-
-
-
那个链接回到这个线程......无论如何,32位程序的“唯一”限制是它不能一次映射超过4GB 。但是您可以通过shared memory 轻松扩展它。
标签:
memory
memory-management
32-bit
【解决方案2】:
简短的回答是:是的。
更长的答案取决于。有一个对页面重新映射的硬件支持,它基本上为您的程序提供了一个将几页窗口放入更大的内存区域。
然而,这个窗口应该由程序本身管理,不会得到内存管理器的支持。有一些程序示例,例如 Windows 上的 SQL。
但是,一般来说这是一个坏主意,程序应该将自身限制为 4GB 或移动到 64 位 :)
【解决方案3】:
通常,您被限制在 2GB 的地址空间内,您的所有分配及其开销、碎片等都必须与内存映射文件(包括您的程序和它使用的 DLL)一起适应。这实际上将您限制为 1.5GB。
具有特殊配置,例如/3GB,您可以为应用程序提供超过 2GB 的可用空间,但这样做会抢夺内核空间,消耗文件缓存、处理能力等。
在Win32上,PAE support可以使用更多,但是不透明,需要自己管理。