Belegen 32 Bit Programme unter Windows 64 Bit nur den Speicher unterhalb von 4 GB



  • wenn der Rechner über 4 GB Speicher (z.B. 16 GB) hat oder kann der Speicherplatz auch da liegen, wo normalerweise 64 Bit Programme den Speicher belegen, also im gesamten Speicherbereich (16 GB)?

    Ich frage mich nämlich, ob sich 32 Bit Programme quasi den unteren Speicherbereich teilen müssen. Weil ich habe hier eine 32 Bit Anwendung die gehäuft abstürzt, sobald sie etwa 1,6 GB Speicher belegt. Im Hintergrund laufen dann noch ein paar weitere 32 Bit Programme.



  • ...



  • Das Programm sieht sowieso nur virtuelle Adressen.
    Das OS kann über Paging dein Programm an beliebige physikalische Adressen legen. Trotzdem kann jedes Programm an der virtuellen Adresse 0 (oder wo auch immer) beginnen.



  • 32Bit Speicherbelegung schrieb:

    Weil ich habe hier eine 32 Bit Anwendung die gehäuft abstürzt, sobald sie etwa 1,6 GB Speicher belegt. Im Hintergrund laufen dann noch ein paar weitere 32 Bit Programme.

    Das liegt sehr wahrscheinlich daran, dass entweder die fragliche 32 Bit Anwendung schlecht programmiert oder deine Systemkonfiguration im Eimer ist... 😉



  • Das liegt sehr wahrscheinlich daran, dass dem Programm der Speicher ausgeht.
    Und damit kommen nur die wenigsten Programme klar.

    Du kannst probieren das LAA (Large Address Aware) Flag in der PE Header des Programms zu setzen, dann sollte das Programm unter einem 64 Bit System fast die vollen 4 GB statt der üblichen 2 GB nutzen können.

    Wie man das mit einer fertigen .exe macht weiss ich aber nicht, musst du dir selbst ergoogeln.
    Und es kann theoretisch auch zu Problemem führen, nämlich dann wenn das Programm "böse" Tricks verwendet, wie z.B. das höchstwertige Bit von Adressen als Markierung für irgendwas zu verwenden. Ich gehe aber davon aus dass die meisten Programme eher "brav" sind, und funktionieren sollten.



  • 32Bit Speicherbelegung schrieb:

    Weil ich habe hier eine 32 Bit Anwendung die gehäuft abstürzt, sobald sie etwa 1,6 GB Speicher belegt. Im Hintergrund laufen dann noch ein paar weitere 32 Bit Programme.

    Das kann damit zu tun haben, dass die Anwendung große zusammenhängende Speicherbloecke benoetigt, die dem System aber irgendwann ausgehen, wenn der Speicher zu stark fragmentiert ist. Das kann durchaus auch passieren, wenn du z.b. 8GB physikalischen Speicher hast und versuchst 1GB "am Stück" zu allokieren.... Je nach derzeitigem Zustand des Speichers.



  • hustbaer schrieb:

    Das liegt sehr wahrscheinlich daran, dass dem Programm der Speicher ausgeht.
    Und damit kommen nur die wenigsten Programme klar.

    Du kannst probieren das LAA (Large Address Aware) Flag in der PE Header des Programms zu setzen, dann sollte das Programm unter einem 64 Bit System fast die vollen 4 GB statt der üblichen 2 GB nutzen können.

    Wie man das mit einer fertigen .exe macht weiss ich aber nicht, musst du dir selbst ergoogeln.
    Und es kann theoretisch auch zu Problemem führen, nämlich dann wenn das Programm "böse" Tricks verwendet, wie z.B. das höchstwertige Bit von Adressen als Markierung für irgendwas zu verwenden. Ich gehe aber davon aus dass die meisten Programme eher "brav" sind, und funktionieren sollten.

    Ja, nach ner LAA Lösung habe ich jetzt auch gesucht, allerdings soll es mit dem Programm (Supreme Commander) Probleme geben wenn man die EXE editiert.
    Allerdings hat SC Forged Alliance das LAA Bit gesetzt, d.h. ich werde meine großen Karten einfach zukünftig mit dem Addon spielen.

    Das aktuelle Match mit ner 80 km * irgendwas Karte konnte ich allerdings durchspielen, ich mußte am Ende halt alle 5 Minuten Speichern und das Spiel 7 mal neu starten.


  • Mod

    Zu Supreme Commander gibt es tatsächlich einen Patch, der die exe LAA macht. Der funktioniert auch. (Zumindest vor 7 Jahren, als ich das letzte Mal geguckt habe)

    Erwarte aber nicht, dass du damit dein 80x80-Spiel vernünftig spielen kannst. Das reicht immer noch nicht, außer du setzt das Einheitenlimit niedrig. Das ist einfach ein Designfehler im Spiel, dass es einerseits leicht solch große Datenmengen geben kann, andererseits keine 64-Bit Version entwickelt wurde.


Anmelden zum Antworten