Ich dachte, dass der maximale Benutzerraum für einen 64-Bit-Prozess 8 TB war, aber ich habe einen kleinen Test gemacht und das Maximum, das ich bekommen konnte, ist 10-11GB..Net Warum kann ich in einem x64-Prozess nicht mehr als 11 GB zugewiesenen Speicher abrufen?
Hinweis: Ich brauche nicht so viel Speicher in einem Prozess, ich will nur aus Neugier warum verstehen.
Hier ist mein Testprogramm:
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:
das Testprogramm aktualisiert mehr deterministisch zu sein.
Um eine Antwort zu akzeptieren, würde ich gerne wissen, wie der tatsächlich zugewiesene maximale Speicher berechnet wird, wenn 8TB nur theoretisch ist.
Wie viel Speicher hat Ihr System? Vielleicht 12 GB? –
4 GB physischen Speicher unter Vista x64 Ultimate –
Wie groß ist die Auslagerungsdatei? –