32位程序在64位操作系统上可以使用超过4GB的内存吗?

11

如果一个32位程序在64位操作系统上运行,它是否能够使用超过4GB的内存(如果有的话)?


这也取决于机器/处理器和操作系统。 - Romain Hippeau
这个链接可能会有用: https://dev59.com/eW025IYBdhLWcg3wl3Em - Hasan
那个链接回到了这个帖子... 无论如何,32位程序的“唯一”限制是它不能一次映射超过4GB。但是你可以通过共享内存轻松扩展它。 - mirh
3个回答

4

简短的答案是:是的。 更详细的答案是:这取决于情况。硬件支持页面重新映射,这基本上为您的程序提供了一个窗口,可以将其放置在较大的内存区域中的一些页面上。 但是,该窗口应由程序本身管理,并且不会得到内存管理器的支持。有一些程序的例子可以像Windows上的SQL那样完成这个功能。 然而,通常这是一个坏主意,程序应该限制自己为4GB或迁移到64位 :)


3
通常情况下,您的地址空间被限制在2GB内,其中必须包括所有分配及其开销、碎片等,以及内存映射文件(包括您的程序和使用的DLL)。这实际上将您限制在1.5GB内。
通过特殊配置(例如/3GB),您可以为应用程序提供超过2GB的可用空间,但这样做会占用内核空间,导致文件缓存、句柄容量等方面的成本。
在Win32上,您可以使用PAE支持来使用更多空间,但它并不透明,您需要自行管理。

0

只有通过将4GB范围的内存映射到其地址空间中才能明确地进行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接