Frage

Unter Windows Server 2003 Enterprise Edition, SP2 (/ 3GB nicht aktiviert)

Wie ich es verstehe, und ich kann falsch sein, der maximal adressierbaren Speicher für einen Prozess ist 4 GB.

Ist die 2 GB privaten Bytes und 2 GB virtuellen Bytes?

Sie erhalten „out of memory“ Fehler, wenn die private Byte-Grenze oder virtuelle Byte-Grenze erreicht ist?

War es hilfreich?

Lösung

Es ist richtig, dass der maximale Adressraum eines Prozesses 4GB ist, in einem gewissen Sinne. Die Hälfte des Adressenraums ist, für jeden Prozess, durch das Betriebssystem aufgenommen. Dies kann mit dem 3GB-Schalter geändert werden, aber es könnte zur Instabilität des Systems führen. So sind wir mit 2 GB Speicher für den Prozess nach links auf seinem eigenen zu verwenden. Na ja, nicht ganz. Es stellt sich heraus, dass ein Teil dieses Raumes wird durch andere Dinge wie DLLs einen anderen gemeinsamen Code aufgenommen. Der tatsächliche Speicher zur Verfügung, um Sie als Programmierer ist etwa 1,5 GB -. 1,7 GB

Ich bin mir nicht sicher, wie Sie versehentlich geht über dieser Grenze umgehen kann, aber ich weiß von Spielen, die Absturz in großen Multiplayer-Karten aus diesem Grund. Ein andere Sache zu beachten ist, dass ein 32-Bit-Programm nicht mehr als der Adressraum 2 GB auf einem 64-Bit-System verwenden kann, wenn sie den / LARGEADDRESSAWARE aktivieren. JA Linker-Flag

Andere Tipps

Der folgende Link erklärt es viel besser, als ich es je könnte:

MSDN - CLR Inside Out: Untersuchung Speicherprobleme

Mark Russinovich begann auf diese eine Reihe von Beiträgen .. sind die Grenzen von Windows: Physical Memory

Während 4GB das lizenzierte Limit für 32-Bit-Client-SKUs ist, ist die effektive Grenze tatsächlich niedriger und abhängig von dem Chipsatz des Systems und die angeschlossenen Geräten. Der Grund dafür ist, dass die physische Adresse Karte nicht nur RAM enthält, sondern Gerätespeicher als gut, und x86 und x64-Systeme bilden alle Gerätespeicher unterhalb der Grenze 4GB Adresse kompatibel bleiben mit 32-Bit-Betriebssystemen, die nicht wissen, wie zu handhaben Adressen größer als 4 GB. Wenn ein System 4 GB RAM und Geräte hat, wie Video-, Audio- und Netzwerkadapter, die Fenster in ihre Gerätespeicher, diese Summe auf 500 MB implementieren, 500MB des 4 GB RAM wird über die 4 GB Adressgrenze befinden.

Sie können nur 2 GB Arbeitsspeicher zugreifen insgesamt (ohne 3GB) auf 32-Bit-Windows-Plattformen.

Sie können mehrere 32-Bit-VMs auf einem 64-Bit-OS laufen, so dass jede App den Zugriff auf so viel Speicher wie möglich hat, wenn Ihre Maschine mehr als 4 GB hat.

Viele Menschen beginnen gerade, diese Hindernisse zu treffen, ich denke, es ist einfacher, wenn Ihre Anwendung in .net oder Java ist als die VMs zu 32Gb steigt glücklich Speicher auf 64-Bit-Betriebssystem.

Auf 32 Bits, wenn es genügend physischen Arbeitsspeicher und Speicherplatz für den virtuellen Speicher, läuft Speicher um 3GB aus, da der Kernel den Adressraum oberhalb 0xC0000000 für sich behält. Auf einem 64-Bit-Kernel eine 64-Bit-Anwendung ausgeführt wird, ist die Grenze bei 8 TB.

Für weitere Informationen Besuche MSDN - Memory Limits für Windows Mitteilungen

Maximale Speicher für eine 32-Bit-Maschine ist 4GB, für eine 64-Bit-Maschine, die Sie jede Menge mehr ansprechen können. (Obwohl einige 32-Bit-Maschinen haben Erweiterungssysteme für mehr zugreifen, aber ich glaube nicht, das lohnt sich die Mühe mit oder unter Berücksichtigung für die Anwendung).

Sie erhalten aus Speicherfehler, wenn die virtuelle Grenze erreicht ist. Unter Windows Server 2003 können Sie die Begrenzung der Leistung Registerkarte Task-Manager 'Commit Limit anzeigen'.

markiert sagt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top