垃圾收集器可以为.NET进程分配的最大内存量是多少?当我编译为x64时,Process.GetCurrentProcess.MaxWorkingSet返回大约1,4GB,但是当我编译为AnyCPU(x64)时,将返回相同的数字。对于x64,它应该更像是任务管理器中显示的“限制”值。我如何获得正确的数字,当超出所有情况下都会导致OutOfMemory异常?.NET进程可以分配的最大内存
一些例子的方法应该返回什么:
1)机器配置:x64的Windows,4GB的物理内存,4GB页面文件
-As 64位进程:8GB
-As 32位进程:1.4GB
2)机配置:x64的Windows,1GB物理内存,2GB页面文件
-As 64位过程:3GB
-As 32位过程:1.4GB
3)机器配置:X32-的Windows,4GB的物理内存,4GB页面文件
-As 64位进程:不会发生
-As 32位进程:1.4GB
4)机器配置: X32-的Windows,512MB的物理内存,512MB的页面文件
-As 64位进程:不会发生
-As 32位进程:1.0GB
这里有一篇有趣的文章,讨论.NET进程开始看到内存异常的理论最大值和范围:http://blogs.msdn.com/b/ tom/archive/2008/04/10/chat-question-memory-limits-for-32-bit-and-64-bit-processes.aspx – 2014-05-29 18:22:54