我以为64位进程的最大用户空间是8TB,但是我做了一点测试,可以得到的最大用户空间是10-11GB。
注意:我不需要一个进程那么多的内存,我只是想了解为什么出于好奇。
这是我的测试程序:
static void Main(string[] args)
{
List<byte[]> list = new List<byte[]>();
while (true)
{
Console.WriteLine("Press any key to allocate 1 more GB");
Console.ReadKey(true);
list.Add(new byte[1024 * 1024 * 1024]);
Console.WriteLine("Memory size:");
double memoryUsage = Process.GetCurrentProcess().PeakVirtualMemorySize64 / (double)(1024 * 1024 * 1024);
Console.WriteLine(memoryUsage.ToString("0.00") + " GB");
Console.WriteLine();
}
}
编辑:
更新了测试程序,使其更具确定性。
要接受答案,我想知道如果8TB仅是理论上的话,实际最大分配内存是如何计算的。
最佳答案
最高可达8 TB,而不是8 TB。您可能最多可能有8 TB,但需要匹配的RAM /交换文件。
关于.net - .Net为什么在x64进程中不能获得超过11GB的已分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2052019/