LukS schrieb:
@|SoulReaver|
Wenn das Large address aware Flag bei einer 32Bit Anwendung gesetzt wird, kann die 32Bit Anwendung 3GB Arbeitsspeicher, statt nur 2GB, adressieren.
OT: In der Tat, ja …
Dies allerdings nur, wenn ein entsprechendes 32-Bit Windows – und nur darum ging es zuvor kausal –
mit aktiviertem
3GByte-Switch gestartet wurde. Denn unter einem x86- und damit 32-bittigem Windows
ohne den
/3GB
-Switch (welcher lediglich die bloße Möglichkeit für entsprechend kompilierte Binaries zur Verfügung stellt [die dann erst durch das jeweilig gesetzte
LAA genutzt werden muß weil
kann]) bringt auch das
Large Address Aware-Flag an sich alleine nichts. Schau Dir Mark Russinovich' Blog-Post an, der weiß es schließlich definitiv – er hat‘s ja programmiert …
LukS schrieb:
Also normalerweise können 32Bit Anwendungen maximal 2GB Arbeitsspeicher pro Prozess anfordern. Mit Flag können sie bis zu 3GB anfordern.
Unter einem x86-Windows
mit aktivem /3GB-Switch, ja.
Unter einem 64-Bit-Windows sind es dann mit aktivem
LAA aber schon 4 GByte.
LukS schrieb:
32-Bit Windows konnte 4GB Arbeitsspeicher verwalten. Mit dem Flag konnte die 32Bit Anwendung, von mehr als 2GB Arbeitsspeicher profitieren, weil sie bis zu 3GB anfordern konnte.
Tut mir leid, aber
so stimmt die Aussage schlicht nicht!
Die
Endbenutzer-Varianten von Windows konnten als 32-Bit-version lediglich maximal 4 GByte an Ram adressieren. Diese Beschränkung galt
nicht für deren entsprechende Server-Varianten – da war teilweise tatsächlich erst bei 8, 32 oder gar 64 GByte (
sic!) Ram schluß (ja, unter x86 und damit 32 Bit). Außerdem spielt da noch die Grafikkarte respektive dessen VRam eine nicht unerhebliche Rolle …
|SoulReaver| schrieb:
Wie geht das? Kannst du das erklären? Das heißt 1404 unterstützt 4gb Arbeitsspeicher?
Mit aktivem
Large Address Aware-Flag kann
Anno 1404 bis zu 3 GByte respektive 4 GByte (x64)
nutzen, ja. Unterstützen muß es zuvörderst aber das Betriebssystem selbst (
/3GB
-Switch; siehe oben) – alles jeweils sofern es sich um ein 32 Bit System handelt.
Unter einem 64-Bit Endbenutzer-Windows kann es dann auch noch bis zu 4 GByte nutzen.
Um den entsprechenden
IMAGE_FILE_LARGE_ADDRESS_AWARE-Flag innerhalb der
IMAGE_FILE_HEADER-Struktur einer Binary zu setzen, kann man etwa das Tool
'Large Address Aware' von
TechPowerUp.com nutzen um eine ausführbare Datei aka Programm diese Eigenschaft zu geben.
Dann darf
Anno 1404 (oder
1701,
1503 oder
1602) auch mit mehr als 2 GByte Arbeitsspeicher arbeiten.
@Baal Netbeck
Meiner bescheidenen Kenntnis nach wurde selbst schon das Hauptspiel, also
Anno 1404, auf jeden Fall aber die Erweiterung
Anno 1404: Venedig mit entsprechendem
LAA-Flag ausgeliefert. Ohnehin wäre ansonsten ja auch die Nutzung von DirectX 10 ein eher hoffnungsloses Unterfangen geworden – hier spielen DirectX 9.0c und sämtliche Vorgänger bezüglich des adressierbaren Menge an Arbeitsspeicher für den Prozess des Spiels ja eine nicht unerhebliche Rolle (siehe '
Stolperfalle DirectX' → anderenorts) …
Wie man sieht, ist das Thema nicht annähernd dergestalt trivial, wie es auf den ersten Blick erscheinen mag.
Deswegen habe ich es
anderenorts mehr als einmal angerissen …
Lektüre:
Microsoft.com • Technet | Mark's Blog · Pushing the Limits of Windows: Virtual Memory
Microsoft.com • Developer | The Old New Thing: Practical Development Throughout the Evolution of Windows · Kernel address space consequences of the /3GB switch
Microsoft.com • Windows Dev Center · Memory Limits for Windows and Windows Server Releases
TechPowerUp.com • Tool 'Large Address Aware'
3DCenter.org • Das Large-Address-Aware-Flag
In diesem Sinne
Smartcom