C++: Hauptspeicher wird nicht wieder freigegeben

Florian Lohoff flo at rfc822.org
Wed Mar 7 00:31:44 CET 2001


On Tue, Mar 06, 2001 at 05:38:12PM +0100, Ingo Luetkebohle wrote:
> s ist unter UNIX eigentlich allgemein so, dass Speicher nur dann
> freigegeben kann, wenn er am Ende des bisher allozierten Bereiches
> liegt denn sonst wuerden ja Loecher entstehen. Zumindest war das vor
> 10 Jahren so, als ich mit 'C' angefangen habe -- obs noch stimmt,
> weiss ich nicht, glaube aber schon.

Ist immer noch so - Ist aber im normalfall auch nicht schlimm das das
ja unbenutzter speicher ist und durch das Page-Coloring oder aging
werden die pages ohne page-faults (Am laengsten nicht benutzt) als erstes
ausgeswapped - Deshalb ist das normal das langlaeufer immer eine wesentlich
kleinere RSS (Resident Set Size) haben als sie wirklich gross sind
da ein grossteil ausgeswapped ist. 

> Das ist aber kein "Bug" man muss nur mit malloc und free (bzw. new und
> delete) richtig umgehen koennen.

Das hat mit umgehen wenig zu tun - Das problem ist das es 
algorithmen gibt bei denen das Ram nicht in der genau der umgekehrten
reihenfolge freigegeben wird wie allokiert und in dem moment geht
das schief.

Ach ja - Das ganze funktioniert so das ueber den system call "brk"
im prinzip nur der oberste pointer des zu diesem prozess gehoerendem
speicherbereichs nach oben geschoben wird um die angegebene groesse.

Flo
-- 
Florian Lohoff                  flo at rfc822.org             +49-5201-669912
     Why is it called "common sense" when nobody seems to have any?





More information about the Linux mailing list