mit delete unter Linux nur prozessinterne Speicherfreigabe möglich?



  • Ich habe ein Programm unter Linux untersucht, welches mit new ständig Speicher alloziert und ihn mit delete nach eine gewissen Zeit wieder freigibt. Das Programm hält damit eine bestimme Menge von Objekten auf dem Heap. Wenn die Zahl der Objekte abnimmt, bleibt der Speicherverbrauch jedoch konstant. Selbst nach dem Löschen aller Objekte, bleibt der Speicherverbrauch auf seinem einmal erreichten Maximalwert stehen. Das Anlegen neuer Objekte erhöht solange den Speicherverbrauch nicht, wie die bisherige maximale Objektanzahl nicht überschritten wird. Es sieht so aus, als wenn der mit delete freigegebene Speicher nur vom gleichen Prozess wieder verwendet werden kann.

    Ist das ein korrektes Verhalten? Kann man das so abändern, dass der Speicher an das System zurückgegeben wird und somit wieder allen Prozessen zur Verfügung steht?



  • Also wenn delete aufgerufen wird, sollte der Speicher wieder an das System zurückgehen... Wird evtl. mit new [] alloziiert und mit delete (statt mit delete [] ) freigegeben? Welchen Speicheranzeige hast du benutzt? Der virtuelle Speicher bleibt afaik immer auf dem Höchststand, hat aber nichts auszusagen.



  • Dass Prozesse den Speicher nicht unmittelbar wieder an das Betriebbsystem zurückgeben, ist oftmals üblich. Falls andere Prozesse den Speicher benötigen, wird das System diesen wohl freigeben.


Log in to reply