Langsame Speicherfreigabe

Hallo,

ich habe folgendes Problem:

in einem Programm werden eine ganze Menge kleinerer Objekte auf dem Heap erzeugt. Das dauert vielleicht 2 min. Wenn ich diese Objekte wieder zerstören will, um den Speicherplatz freizugeben, dauert dies ca. 30 min. Das ist etwas unschön, denn dass nimmt den größten Teil der Programmlaufzeit in Anspruch.

Jedes Objekt hat folgende Bestandteile:
2 double Zahlen
2 Pointer
1 (STL)map : unsigned short -> Pointer mit max. 5000 Einträgen
(die meisten haben eher weniger Einträge, so

Hallo,

im Worst Case werden grob 6 GB Speicher verbraten. Da bist Du mit Sicherheit sehr lange Zeit beim Auslagern. Hast Du mal einen Profiler darauf angesetzt?

Ciao,

Herb

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das Programm braucht etwa 780MB Speicher. Der Rechner hat 2GB.

Das Profiling hat folgendes ergeben:
Die Funktion chunk_free braucht 45% der Zeit, der Profiler konnte aber nicht feststellen von wem sie aufgerufen wird (spontaneous).
(Es ist keine von meinen Funktionen.)
Das Profiling selbst braucht etwa 30% der Zeit.
Der Rest verteilt sich auf eine ganze Reihe von Funktionen mit jeweils [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]