PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehr als 1GB am Stück für Programme reservieren?


Zool
2004-01-06, 15:29:41
Ich versuche für eine größere Simulationsrechnung (Programm mit Microsoft .Net-Professional 2003 kompiliert) mehr als 1GB Speicher (am Stück zu reservieren).
Bis 1GB klappt das unter WindowsXP ohne Probleme aber bei mehr als 1GB kommt eine Meldung in der Art:
"VirtualAllocate(....) return 0, memory address xxxxxx"

Liegt der Fehler an .Not Profressional (sollte laut Handbuch aber gehen)? Oder ist es ein Windows-Bug?

Hat jemand eine Lösung?


System: Dual Xeon (mit HT) 2.6Ghz, 2GB RAM
Windows XP Professional mit SP1

Danke

Änderung:
Wenn der Beitrag eher ins Programmier-Forum rein soll, bitte verschieben.

Demirug
2004-01-06, 16:19:51
Das ist weder ein Windowsbug noch ein Bug im Compiler. Das Verhalten ist Systembedingt so richtig.

Wenn du einen Speicherblock willst muss im Addressraum auch ein entsprechende grosser Block frei sein. Bei nur 2GB Addressraum ist es schon Glück wenn man ein GB am Stück findet.

Du wirst also dein Verfahren etwas anpassen müssen das es auch mit mehren Speicherblöcken zurecht kommt. Allerdings kommt spätestens bei 2GB-X das entgültige aus. Mit Tricks lässt sich das bis 3GB-X erweitern.

Bei solchen Datenmengen sollte man langsam über ein 64Bit OS nachdenken.

Gast
2004-01-06, 20:38:37
@Zool

Leg' die Auslagerungsdatei(en) mit einer Anfangsgröße von (insgesamt) mind. 4 GB oder noch größer an, damit auf alle Fälle die Chance erhöht wird, daß mehr als 1 GB virtuell am Stück verfügbar wären. ;)

Zool
2004-01-07, 10:50:15
Werde es mal testen mit größeren Swapfile. Eventuell werde ich doch das Berechnen meiner 8K x 8K großen FFTs in kleine Teile splitten müssen.

Nachtrag:

Hat leider nicht funktioniert.