RAM Speicher steigt immer höher ?!?!?
-
Hi,
also ich ahbe ein Programm welches mir nur immer wieder Daten in einer Datenbank angleicht und erweitert. Das Programm läuft auf einem Windowsserver und arbeitet mit einer MySQL Datenbank auf einem Linuxserver.
Mehr wird nicht gemacht und trotzdem passiert es immer wieder (nicht kontinuierlich), dass der RAM Speicher ansteigt und nicht wieder runter geht.1. Woran kann das genau liegen? Bzw. welche genaueren Info`s brauchtr Ihr von mir?
2. Kann ich den Speicher wieder löschen? Wenn ja wie würde das funktionieren?Danke
-
Dynamische Speicherreservierung / Memory-Leaks gecheckt?
-
zum auffinden von MemoryLeaks oder zu deutsch Speicher Lecks gibt es ein sehr schönes Freeware Tool im Netz, schau am besten mal unter http://www.automatedqa.com/products/memproof/
damit kann man schön MemoryLeaks auffinden und wenn du ncihts finden kannst hätte ich dir noch eine sehr unschöne Variante, und zwar gibt es genügend Programme zum den Speicher aufräumen, die aus deinem Prog im Hintergrund starten
-
Wenn du meine Klasse verwendest (und davon gehe ich aus) da liegt es nicht an dieser außer du erstellst eine Instanz mit NEW.
Meine Klasse löscht bei einem weiteren Select wieder das ResultSet.
Somit bleibt auch das nicht drin. Weiß aber nicht welche Version Du hast. Hat sich einieges geändert seit damals.
-
Also ich habe das MEMPROOF nun laufen lassen -->
wenn ich das richtig verstanden habe reserviere ich nun die ganze Zeit Speicher und gebe diesen nicht mehr frei.
-
->genau das ist ein memory leak.
Entsteht meistens durch sowas:#ifdef I_WANT_MEMORY_LEAKS int* a = new int; a = new int; // memory leak, speicher wird nicht freigegeben! #else int* a = new int; delete a; a = NULL; a = new int; #endif //sodele, da hammers ;)
-
Wie gut dass es den Memproof gibt!
Dann kannste ja auch gleich die sehr unschöne Variante aus obigem Post vergessen
-
was ist daran unschön?
mei, was habi vergessn?
-
Vergessen hast du das #endif.
Aber unschön sollte es doch sein - war ja der Sinn der Sache.
-
-
auch nochn tipp
benutzt du mysql_free_result() um das recordset wieder freizugeben?
wenn nicht, machen.
-
Wenn er meine Klasse verwendet dann ja.
-
Gibt es zu diesem Tool auch eine Visual C/C++ 6.0 implementierung oder ein anderes Tool welches vergleichbares für Visual C/C++ 6.0 leistet
-
ja verwende die Klasse.
Trotzdem steigt der Speicherverbrauch immer mehr an.