 | Im Trivialfall wird nur dynamisch Speicher angelegt,
jedoch nie wieder freigegeben (z.B. bei klassischen
Pascal-Implementierungen). Dies ist einfach zu realisieren,
begrenzt jedoch natürlich die Möglichkeiten, da nicht
beliebig viel Speicher zur Verfügung steht, um dies lange
genug durchzuhalten.
|
 | Bei vielen klassischen Programmiersprachen wie Modula-2 und
C erfolgt die Freigabe explizit, z.B. in Modula-2 über
DISPOSE. Nachteile:
 | Die Freigabe kann vergessen werden (Speicherlecks),
|
 | es ist nicht immer trivial zu ermitteln, wann
etwas freigegeben werden sollte, und
|
 | Zeiger werden noch weiterverwendet, obwohl die
Datenfläche dahinter bereits freigegeben worden ist
(dangling reference).
|
Insbesondere letzteres führt zu extrem schwer aufzudeckenden
Problemen.
|
 | In Oberon (und anderen modernen Programmiersprachen)
erfolgt die Freigabe vollautomatisch. Alle Datenflächen, auf
die nicht mehr zugegriffen werden kann, werden bei Bedarf
wiederverwendet (garbage collection).
|
 | Beim Ulmer Oberon-System wird ein {copying
garbage collector} verwendet, der Fragmentierung ausschließt.
|