我认为这个问题听起来很清楚,但需要进一步解释:
假设我们安装了 Windows 7 x64 PC,内置8GB内存; ( 64位操作系统,32位进程是我的意图 )
问题1: 64位进程在此环境中可以使用多少内存?
问题2: 32位进程在此环境中可以使用多少内存?
问题3:如果32位进程在此环境中只能使用2GB的RAM,(即使它是大地址空间:3gb),但大多数游戏都是32位;这样做也是如此意思是:虽然我们安装了8GB的RAM,但一个游戏例如在任何给定时间只能使用2-3GB的RAM?
答案 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: