none
App bekommt nicht mehr als 1,5 GB zugesicherten Speicher RRS feed

  • Frage

  • Hallo,

    wir haben eine Applikation entwickelt, die recht speicherintensiv ist. Deshalb haben wir sie als x64-kompatibel programmiert und gebaut.

    Wenn wir das Programm nun auf einem Server, 2CPUs mit jew. 8 Kernen und 24GB RAM, starten, bekommt es maximal 1,5GB physikalischen Speicher. Zeitgleich sind aber noch ca. 16GB des RAM frei.

    Woran kann das liegen?

     

    Vielen Dank,

    Harald

    Freitag, 13. Januar 2012 10:40

Alle Antworten

  • Was passiert denn, wo?

    Wie allokiert ihr den Speicher?

    Was steht im Task-Manager?


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Freitag, 13. Januar 2012 11:20
    Moderator
  • Das Programm startet und lädt eine große Datenbank ein. Der Ladevorgang dauert ca. 2 Minuten und während dessen sieht man den Speicherverbrauch im Taskmanager /ProcessExplorer stetig steigen, bis 1,5GB belegt sind. Dann beginnt das Swapping und das Programm wird langsam.

     

    Wir haben das Gefühl, dass die 1,5GB eine Schranke des Betriebssystems sind, da wir dieses Phänomen sowohl auf einem Windows 2008 Server, als auch auf einem Windows 7 Premium beobachten können.

    Der Speicher wird durch den Standard-New-Operator von VS2010 allokiert.

     

    Vielen Dank für die schnelle Antwort!

    Freitag, 13. Januar 2012 13:10
  • während dessen sieht man den Speicherverbrauch im Taskmanager /ProcessExplorer stetig steigen

    WELCHEN Wert siehst Du denn? Nenn doch bitte mal Namen, da es sehr viele "Speicher" Kennzahlen gibt...
    Auch gibt es keinen "Verbrauch" des Speichers, oder legst Du alle paar Tage etwas Speicher nach...
     Die 1.5 GB treten eigentlich nur bei x86 Apps auf. Bist Du sicher, dass der Prozess als x64 läuft und nicht nur auf einen x64-System als x86 Prozess???


    Jochen Kalmbach (MVP VC++)
    Freitag, 13. Januar 2012 13:24
  • Ich spreche vom belegten physikalischen Speicher. Ich habe die App eben mit dumpbin /headers geprüft und dort auch die x64 gefunden. Beim stöbern im Web bin ich jetzt noch auf die Linker->System Einstellung "Enable Large Addresses" gestoßen. Daraufhin wurden auf meinem Entwicklungsrechner mit Windows 7 x64 immerhin schon 2GB allokiert. Im ResMon habe ich gesehen, dass der physikalische RAM damit ziemlich ausgelastet war. Ich werde das gleich noch Mal auf dem Server versuchen und melde mich dann wieder.

     

    Vielen Dank bis hierher!!!

    Freitag, 13. Januar 2012 13:45