Ich bin Mitglied in einem Team, das eine Delphi-Anwendung zu entwickeln. Die Speicheranforderungen sind riesig. 500 MB sind normal, aber in einigen Fällen wurde die Ausnahme für den Arbeitsspeicher aufgehoben. Der Speicher, der in diesen Fällen zugewiesen wird, liegt normalerweise zwischen 1000 und 1700 MB.Warum 2 GB Speicherlimit bei 64-Bit-Windows?
Wir wollen natürlich 64-Bit-Compiler, aber das wird jetzt nicht passieren (und wenn wir es in Unicode geschieht auch konvertieren müssen, aber das ist eine andere Geschichte ...).
Meine Frage ist, warum gibt es ein 2-GB-Speicherlimit pro Prozess, wenn in einer 64-Bit-Umgebung ausgeführt werden. Der Zeiger ist 32 Bit, also glaube ich, dass 4 GB das richtige Limit wären. Ich benutze Delphi 2007.
EDIT: Also, wenn ich die IMAGE_FILE_LARGE_ADDRESS_AWARE Flagge in Delphi gesetzt durch Verwendung:
{$SetPeFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
Und läuft die resultierende Exe-Datei auf einem x64 Windows Server 2003 dann die Anwendung Kann 4 GB adressieren?
- Sollte ich/3GB in boot.ini schalten?
- Wir haben versucht, dies aber auf einem 32-Bit-Windows Server 2003 und es scheint, die Fenster Ressourcen zu begrenzen. Es gab mehr Ausnahmen für "Nicht genügend Speicher" mit GDIError im Protokoll. Aber vielleicht verschwindet dies, wenn Sie in einem 64-Bit-Betriebssystem laufen?
Der Schalter 3GB im Boot.Ini ist nur für 32-Bit-Windows, und es ist erforderlich für LARGEADDRESSAWARE zu arbeiten. Beachten Sie, dass der verfügbare Platz für Windows auf 32-Bit-Systemen verkleinert wird. Sehen Sie das Beispiel hier, http://blogs.technet.com/markrussinovich/archive/2009/03/26/3211216.aspx, oder lesen Sie die ausgezeichneten Windwos Internals von Russinovoch und Solomon. –