Virtueller Speicher steigt an



  • Hallo!

    Mein Dienst zeigt folgendes Problem:

    Die aktuelle virtuelle Speichernutzung nimmt mit der Zeit immer mehr zu und führt zu der Meldung "nicht genügend virtueller Arbeitsspeicher". Wenn die Auslagerungsdatei nicht mehr vergrößert werden kann, stürzt der Rechner ab.

    Die aktuelle physikalische Speichernutzung pendelt sich nach einer gewissen Zeit aber bei einem Wert ein.

    Ich benutze VC++ 6.0, sowie deren stl und MFC.

    Ich habe bereits mit dem Stackwalker und vld nach Speicherlecks gesucht, aber keine gefunden.

    Ich habe meinen Dienst in seine Einzelbestandteile(Dienst an sich, Dateiinhalt analysieren, DB) zerlegt und kann in den Einzelteilen keinen permanenten Anstieg des virtuellen Speichers feststellen. Erst nach dem Zusammenführen aller Komponenten tritt der o.g. Effekt auf.

    Ich benutze sehr häufig den std::string, speziell zur Rückgabe von Werten von Klassenmethoden. Die Werte, die in die DB eingetragen werden sollen, werden dynamisch mit Hilfe der Methoden an die DB übergeben.

    string myClass::GetValue1()
    {
     mValue1 += "Value1: ";//string mValue1("");->Membervariable im Konstruktor initialisert
     mValue1 += File.GetValue1();
     return(mValue1);
    }
    

    Deshalb habe ich an der Stelle wo die Daten der Datei in die DB eingetragen werden sollen, einen Dummy(struct) eingebaut, der den Inhalt der Datei quasi-statisch speichert(char arrays)und erst dann in die DB einträgt.
    Ergebnis: Beim der Übergabe der Daten an den Dummy wird noch Speicher verbraucht, beim Eintrag in die DB aber nicht mehr.

    Kennt jemand die Ursache für diesen Effekt? Ich habe ein Problem, eine Lösung, kann aber den Grund nicht nennen, warum dieser Effekt auftritt.

    Gruß,

    Steffi


Anmelden zum Antworten