垃圾收集器可以爲.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