我在性能测试期间遇到了这个问题。
当使用x86平台标志编译C#控制台应用程序时,未设置Large Address Aware标志:
来自
请注意,"应用程序可以处理大于2GB的地址"标志已设置。
我找不到关于这个主题的任何文档。所有其他堆栈溢出问题都建议您必须手动执行此操作: 如何在C#源代码中启用IMAGE_FILE_LARGE_ADDRESS_AWARE? 我可以从Visual Studio中设置LARGEADDRESSAWARE吗? 在32位应用程序中使用3Gb内存 问题是:这在哪里有记录?
当使用x86平台标志编译C#控制台应用程序时,未设置Large Address Aware标志:
来自
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
当将标志设置为“任何 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吗? 在32位应用程序中使用3Gb内存 问题是:这在哪里有记录?