I thought that the maximum user space for a 64bit process was 8TB, but I did a little test and the maximum I could get is 10-11GB.
Note: I don't need that much memory in a process, I just want to understand why out of curiosity.
Here is my test program:
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();
}
}
EDIT:
Updated the test program to be more deterministic.
To accept an answer I would like to know how the real maximum allocated memory is calculated if 8TB is only theoretical.