我目前有一个 32 位 .Net 应用程序(在 x86 Windows 上),需要大量内存。最近它开始抛出 System.OutOfMemoryException。
因此,我计划将其作为 64 位进程迁移到 x64 平台。这将有助于解决内存不足的异常。我正在阅读 MSDN 上的这篇文章Windows 的内存限制 http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
所以,我的问题是,如果我编译一个 64 位 .Net 应用程序,它是否会将 IMAGE_FILE_LARGE_ADDRESS_AWARE 设置为默认值(如文章所示)?即我能够利用 8GB 用户模式虚拟地址空间吗?
x64 进程的最大内存限制为 8 TB,但实际限制要小得多,因为它取决于系统上的物理内存量和页面文件大小。看这个帖子 https://stackoverflow.com/questions/2052019/net-why-cant-i-get-more-than-11gb-of-allocated-memory-in-a-x64-process有关此的更多详细信息。
IMAGE_FILE_LARGE_ADDRESS_AWARE 影响在 x64 操作系统(或带有 /3GB 指令的 x86 操作系统)上运行的 x86 进程。您的 x64 应用程序不需要设置大地址感知标志,它将能够使用系统上的所有可用虚拟内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)