我在性能测试期间遇到了这个问题。
使用 x86 平台标志编译 C# 控制台应用程序时,未设置大地址感知标志:
输出dumpbin /headers app.exe
:
Dump of file app.exe
PE signature found
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
14C machine (x86)
3 number of sections
569F0089 time date stamp Tue Jan 19 21:35:37 2016
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
102 characteristics
Executable
32 bit word machine
将标志设置为“Any Cpu”时,生成的 exe 是大地址感知的:
Dump of file app.exe
PE signature found
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
14C machine (x86)
3 number of sections
569F01D7 time date stamp Tue Jan 19 21:41:11 2016
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
22 characteristics
Executable
Application can handle large (>2GB) addresses
请注意,设置了“应用程序可以处理大 (>2GB) 地址”标志。
我找不到有关此主题的任何文档。所有其他堆栈溢出问题都建议您必须手动执行此操作:
如何在 C# 源代码中启用 IMAGE_FILE_LARGE_ADDRESS_AWARE?
我可以在 Visual Studio 中设置 LARGEADDRESSAWARE 吗?
问题是:这在哪里记录?