32 位应用程序内存在 64 位操作系统中使用。

Pet*_*e2k 13 windows-7 64-bit

如果我的操作系统是 64 位,我的 32 位应用程序可以使用 64 位内存 (> 3.5GB) 吗?

Dav*_*ett 6

如果应用程序具有 AWE 感知能力,那么它们可以使用超过 4Gb 的地址空间,但效率低于 64 位应用程序。如果 PAE 已启用并且进程能够使用它,那么 32 位 Windows 变体下的 32 位进程甚至可以访问超过 32 位地址空间所允许的空间。

单个 32 位进程(不是 AWE 感知的)通常限制为 3Gb(其虚拟地址空间的第一个 Gb 保留用于内核相关操作)如果您正在运行多个进程,那么它们将能够在总计 (每个最多可以使用 3Gb,总内存允许),因为它们的虚拟地址空间共享。

每个进程的限制在类 Unix 环境中更有帮助,其中服务往往基于进程而不是基于线程(一个进程中的多个线程共享进程资源,因此共享单个 3Gb 虚拟地址空间),因为更常见在 Windows 下在 Windows 中启动一个新进程非常昂贵,所以线程是首选,在大多数 Unix 环境下启动一个新进程并不比启动一个新线程消耗更多的资源)。例如,对于仅运行 SQL Server 的机器来说,它不是很有帮助,因为它只会成为一个进程,因此会达到 3Gb 的限制(某些版本可以配置为 AWE 感知但不是全部,并且计划在下一个主要版本中删除该功能)

以及 32 位进程能够使用总共超过 3Gb 的空间,操作系统将能够使用任何未使用的内存进行磁盘缓存,因此它可能不会浪费,假设进程不以这种方式打开文件告诉操作系统不要打扰这样做。


Ign*_*ams 5

如果应用程序使用AWE,则是(尽管这不限于 64 位操作系统)。没有它,进程仍然被限制在 4GB 的地址空间内。