Welchen maximalen Speicher kann der Garbage Collector für einen .NET-Prozess reservieren? Wenn ich auf x64 kompiliere, gibt Process.GetCurrentProcess.MaxWorkingSet ungefähr 1,4GB zurück, aber wenn ich zu AnyCPU (x64) kompiliere, wird die gleiche Zahl zurückgegeben. Für x64 sollte es eher wie der "Limit" -Wert sein, der im Task-Manager angezeigt wird. Wie kann ich die richtige Nummer erhalten, die OutOfMemory-Exceptions verursacht, wenn sie in allen Fällen überschritten werden?Maximaler Speicher, den ein .NET-Prozess zuweisen kann
einige Beispiele, was die Methode zurückgeben soll:
1) Maschinenkonfiguration: x64-Windows 4 GB physischer Speicher, 4 GB Auslagerungsdatei
-wie 64-Bit-Prozess: 8GB
-wie 32-Bit-Prozess : x64-Windows 1 GB physischer Speicher, 2 GB Auslagerungsdatei
-wie 64-Bit-Prozess:
2) Maschinenkonfiguration 1.4GB 3GB
-wie 32-Bit-Prozess: 1.4GB
3) Maschinenkonfiguration: x32-Windows 4 GB physischen Speicher, 4 GB Auslagerungsdatei
-wie 64-Bit-Prozess: Wird nicht passieren
-wie 32-Bit-Prozess: 1.4GB
4) Maschinen-Konfiguration: x32-Windows 512 MB physischen Speicher, 512 MB Auslagerungsdatei
-wie 64-Bit-Prozess: Wird nicht passieren
-wie 32-Bit-Prozess: 1.0GB
Hier ist ein interessanter Artikel über theoretische Höchstwerte und Bereiche, in denen ein .NET-Prozess mit Ausnahmen wegen Speichermangel beginnt: http://blogs.msdn.com/b/ tom/archive/2008/04/10/chat-question-memory-limits-für-32-bit-und-64-bit-prozesse.aspx –