x86可执行文件在64位操作系统上可以使用多少内存?

时间:2012-12-30 08:47:09

标签: windows process 64-bit ram

我认为这个问题听起来很清楚,但需要进一步解释:

假设我们安装了 Windows 7 x64 PC,内置8GB内存; ( 64位操作系统,32位进程是我的意图

问题1: 64位进程在此环境中可以使用多少内存?

问题2: 32位进程在此环境中可以使用多少内存?

问题3:如果32位进程在此环境中只能使用2GB的RAM,(即使它是大地址空间:3gb),但大多数游戏都是32位;这样做也是如此意思是:虽然我们安装了8GB的RAM,但一个游戏例如在任何给定时间只能使用2-3GB的RAM?

3 个答案:

答案 0 :(得分:1)

  

问题1:64位进程在此环境中可以使用多少内存?

它可以使用你所有的记忆

  

问题2:32位进程在此环境中可以使用多少内存?

对于x64机器上的x86可执行文件,它默认使用2GB。如果设置了IMAGE_FILE_LARGE_ADDRESS_AWARE,则可以使用 4GB MSDN

有趣的是,如果未设置或清除IMAGE_FILE_LARGE_ADDRESS_AWARE,x64可执行文件在x64计算机上最多可以使用 2GB

  

问题3 :(我不确定)如果32位进程在此环境中只能使用2GB内存(即使它是大地址空间:3gb),另一方面(就我而言)知道)大多数游戏都是32位;所以这意味着:虽然我们安装了8GB的RAM,但是(例如游戏)在任何给定时间都只能使用2-3GB的RAM ????

没有 4GB

答案 1 :(得分:1)

在像Windows这样的需求分页保护模式操作系统上,可用的RAM量与进程可以使用的虚拟内存的数量完全无关。限制因素是页面文件可以支持多少虚拟内存。 Windows中的页面文件以启动时和注册表设置确定的大小开始。从那里,当进程需要更多内存时,Windows可以根据需要增加页面文件的大小。

  

64位进程可以使用此环境的内存量是多少?

这是不可预测的,但至少与页面文件中的当前可用空间一样多。你通常会得到大约13千兆字节。这个空间可以增长突飞猛进,在程序的第二次运行中,它可能会消耗更多的内存,因为Windows会赶上并增加页面文件。你可以通过Mark Russinovich在blog post中看到这一点。

  

32位进程在此环境中可以使用多少内存?

默认情况下为2千兆字节。程序的EXE头中的大地址感知选项位可以将其扩展到4千兆字节。大多数32位程序都会关闭此选项。

  

如果32位进程在此环境中只能使用2GB的ram ......

它是2或4千兆字节,而不是3.再次强调,它与RAM无关。即使在具有8 gig RAM的机器上,一个32位进程也是LAA 非常不可能消耗4 gig的RAM。 RAM是一种共享资源,所有进程都需要其中的一部分。消耗4 gig的32位进程很可能会将其中的一部分分页。

答案 2 :(得分:0)

Win32 app,x64 OS:

  • 同时:
    • 最多2 GB的地址空间(由于碎片等原因,有效数量较小)
    • 如果进程二进制文件标记为/ LARGEADDRESSAWARE
    • ,则最多4 GB的地址空间
  • 不一定同时通过内存映射文件mapping/unmapping views of interest
    • 所有可用内存,特别是4 GB及更多