wake-up-neo.net

Die maximale Speichermenge, die ein einzelner Prozess unter Windows ansprechen kann

Speichergrenzen für Windows-Versionen antwortet mit der maximalen Speichermenge, die ein einzelner Prozess unter Windows ansprechen kann:

Bei 32-Bit-Versionen von Windows kann ein einzelner Prozess die Nr. .__ zuordnen. mehr als 3 GB virtueller Speicher zur Zeit. In 64-Bit-Versionen von Windows kann ein 32-Bit-Prozess nicht mehr als 4 GB von .__ zuordnen und adressieren. virtuellen Speicher auf einmal.

Für 64-Bit-Prozesse ist die Menge schwierig zu berechnen, da dort Es gibt zahlreiche überlappende Grenzwerte, die je nach allen gelten können Arten von Faktoren. Es ist in der Regel um 7 TB.

Meine Frage: Wie überprüfe ich die Werte wie "3GB", "4GB" usw.?

Können wir einen C # -Code schreiben, um das zu beweisen? Gibt es eine Methode dafür?

Vielen Dank.

26
user1108948

Mark Russinovich veröffentlichte eine mehrteilige Serie über Windows-Speicherressourcen, die dies sehr gut abdeckt. Sie finden es hier: http://blogs.technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx

Er geht auf die Gründe ein, warum die Grenzen so sind, wie sie sind, sowie Tests. Der Code für die Tests schwebt irgendwo in den Röhren.

Wenn Sie mehr über Speicherressourcen und die Probleme erfahren möchten, die Sie beim Auslaufen der verschiedenen Typen feststellen können, ist dies eine gute Lektüre.

Kurz gesagt, 32-Bit-Betriebssystem auf 32-Bit-Betriebssystem: 2 GB, es sei denn, der Adressraum ist auf große Adressräume eingestellt. In diesem Fall 3 GB. 32-Bit bei 64-Bit-Betriebssystem: 2 GB, sofern nicht auf großen Adressraum eingestellt, in diesem Fall 4 GB.

64-Bit-Prozess: 2 GB (sofern nicht auf großen Adressraum eingestellt). In diesem Fall können bis zu 8 TB adressiert werden, es sei denn, er wird auf Intel Itanium-basierten Systemen gehostet, die auf 7 TB beschränkt sind.

Microsoft gibt die verschiedenen Grenzwerte (nach Geschmack und Typ) an: http://msdn.Microsoft.com/en-us/library/aa366778.aspx

30
StarPilot

Sie können eine Art Schleife in eine Konsolen-App schreiben, um dies zu testen.

Erstellen Sie möglicherweise eine Zeichenfolge, die genau 1 MB groß ist, und durchlaufen Sie einen Verkettungsprozess, um die Größe zu erhöhen, bis ein Fehler ... Stack Overflow angezeigt wird.

Bei jeder Iteration WriteLine die Größe oder Anzahl der Iterationen.

EDIT

Ich würde hinzufügen, da STRING unveränderlich ist (obwohl technisch ein Referenztyp ist), um OBJECT zu verwenden

Bearbeiten Sie zwei

Trisped weist darauf hin, dass eine in einem Objekt eingeschlossene Zeichenfolge immer noch unveränderlich ist.

Das Erstellen eines Arrays von Bytes [1024] sollte den Trick erfüllen.

1
Wesley