我在.NET中开发一个32位应用程序,由于各种原因无法编译为64位应用程序。
我需要同时运行其中的许多并且它们使用大量内存。我想加载一个带有大量内存的Windows 7盒子,因此想要使用64位版本的Windows 7,以便我们可以在这些盒子上放置几千兆字节的RAM。
我的问题是:我的应用程序的每个实例使用的最大内存大约是500mb。在Windows 7 64位中,这些32位应用程序将在Windows中使用WOW64仿真层运行(我假设)。当我开始同时运行越来越多的这些实例时,它们是否会停留在底部2gb内部,或者Windows是否会在64位Windows中使用所有更高地址的内存范围为它们分配内存?在这种情况下,32位软件的可寻址内存限制只是每个实例的限制,还是所有实例都限制在RAM的底部2gb?
答案 0 :(得分:2)
您将内存(物理地址空间)与虚拟地址空间混淆。你可以将超过4GB的内存放入32位系统中;您不需要移动到64位来获得物理地址空间。每个进程都有自己的虚拟地址空间,因此每个进程都将获得自己的2GB用户模式地址空间。 (如果使用/ LARGEADDRESSAWARE在WOW64上运行,则为3GB / 3GB或4GB。)