32位进程能否在64位windows操作系统上访问更多内存?
据我所知,在32位Windows上,32位进程在没有/3GB开关的情况下只能访问2GB内存,而操作系统由于其自身的可怕原因占用了部分内存。这似乎符合我的经验,因为我们有一个应用程序,当它达到大约1.2-1.5 GB的RAM时会崩溃,而没有内存异常,即使仍然有足够的内存可用32位进程能否在64位windows操作系统上访问更多内存?,windows,process,64-bit,Windows,Process,64 Bit,据我所知,在32位Windows上,32位进程在没有/3GB开关的情况下只能访问2GB内存,而操作系统由于其自身的可怕原因占用了部分内存。这似乎符合我的经验,因为我们有一个应用程序,当它达到大约1.2-1.5 GB的RAM时会崩溃,而没有内存异常,即使仍然有足够的内存可用 将这个32位的应用程序移动到64位的Windows,允许它访问超过1.5 GB的空间吗?应用程序本身是否必须升级到64位?您的应用程序将受到指针大小的限制,例如32位 如果你的应用程序要访问更多内存,那么你需要某种分段内存体系
将这个32位的应用程序移动到64位的Windows,允许它访问超过1.5 GB的空间吗?应用程序本身是否必须升级到64位?您的应用程序将受到指针大小的限制,例如32位
如果你的应用程序要访问更多内存,那么你需要某种分段内存体系结构,就像我们在16位时代那样,应用程序使用16位指针和偏移量来访问完整的32位内存空间。较新版本的Visual Studio有一个新标志,使32位应用程序具有“大地址空间感知”。基本上,它所做的是说,如果它加载在64位版本的windows上,那么它将获得4GB(32位指针的限制)。这当然比32位版本的windows上的2或3 GB要好。见: 最值得注意的是它说: 内存和地址空间的限制 不同的平台、操作系统、, 以及 图像\u文件\u大\u地址\u感知值 加载的_图像结构和 正在使用4GB的调谐(4GT)。 已设置图像\u文件\u大\u地址\u感知 或通过使用 /LargeAddressware链接器选项
另请参见:WOW64允许在64位Windows上使用32位Windows应用程序,将32位指针转换为真正的64位指针。实际上,32位寻址应该允许访问4GB内存 是的,在适当的情况下,Windows上的32位进程可以访问完整的4GB内存,而不是通常限制为2Gb的内存 要使其工作,您需要以下各项:
- 应用程序必须在64位操作系统上运行
- 必须使用/LargeAddressWare标志编译应用程序
- 在这种情况下,应测试应用程序,以确保其实际工作正常。;)(特别是,依赖所有指向2GB边界以下地址的指针的代码在这里显然不起作用)