【发布时间】:2017-05-31 12:18:55
【问题描述】:
我正在编译一个设置了 /LARGEADRESSAWARE 开关的应用程序,但是在运行并查看任务管理器时,该应用程序分配了最大值。约2.5GB 然后它会因内存分配错误而失败。这是正确的行为吗?
- 32 位应用程序(当然)
- 64位操作系统/Win10
- 编译的 Visual Studio 社区 2017
- 有足够的可用操作系统内存 (16GB)
在任务管理器中,我应该看到完整的 4GB。对于在 64 位操作系统下运行的 32 位进程,MSDN 声明“设置了 IMAGE_FILE_LARGE_ADDRESS_AWARE 的 4 GB”here
这是链接器命令行(去掉了一些路径)
/OUT:"xxx.exe" /MANIFEST /LTCG /NXCOMPAT /PDB:"xxx.pdb" /DYNAMICBASE /LARGEADDRESSAWARE /DEBUG /MACHINE:X86 /SAFESEH:NO /PGD:"xxx.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"xxx.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"xxx" /TLBID:1
【问题讨论】:
-
任务管理器默认不显示提交大小。当您遇到内存不足问题时,工作集和私有字节都是无意义的数字。任务管理器是你能找到的最糟糕的内存分析器:)
标签: windows visual-studio