在Windows上,在正常情况下,32位进程只能访问2GB的RAM(或者带有boot.ini文件中的特殊开关的3GB).在64位操作系统上运行32位进程时,可用内存量是多少?是否有任何特殊的开关或设置可以改变这种情况?
默认为2 GB.如果应用程序是大地址空间感知(与/ LARGEADDRESSAWARE链接),它获得4 GB(而不是3 GB,请参阅http://msdn.microsoft.com/en-us/library/aa366778.aspx)
它们仍然限制在2 GB,因为许多应用程序依赖于指针的最高位为零.
4 GB减去与/ LARGEADDRESSAWARE链接时系统使用的内容.
当然,如果设置该标志,你应该更加小心指针算法.
似乎没有人触及这样一个事实:如果你有许多不同的32位应用程序,wow64子系统可以将它们映射到4G以上的内存中,所以在具有足够内存的64位窗口上,你可以运行更多的32位应用程序而不是原生的32位系统.
32位进程仍限于64位操作系统中的相同约束.问题是内存指针只有32位宽,因此程序无法分配/解析任何大于32位的内存地址.