next up previous contents
Next: Grundbegriffe der Garbage Collection Up: Speicherverwaltung Previous: Allokation   Inhalt


Garbage Collection

Die Nachteile manueller Speicherverwaltung sind hinlänglich bekannt. Wird die Freigabe von nicht mehr benötigtem Speicher dem ablaufenden Programm überlassen, gibt es zwei potentielle Fehlersituationen: Wird die manuelle Speicherfreigabe vom Programmierer vergessen, so kann der Speicherbedarf eines laufenden Programms stetig wachsen, was (endlichen Speicher vorausgesetzt) früher oder später zur Beendigung des Programmes führen muß.

Wird umgekehrt ein Speicherbereich freigegeben, der noch in Benutzung ist, und wird dieser Bereich vom Laufzeitsystem einem anderen Objekt zugeteilt, so führt dies zur ,,Fehlinterpretation`` eines Bereiches d.h. es tritt ein Typfehler auf [Cardelli and Wegner, 1985]. Auch wenn Hilfsmittel zum Auffinden von Programmfehlern im Bereich der Speicherfreigabe zu Verfügung stehen, ist die Fehlerquelle extrem schwer zu lokalisieren, da der resultierende Laufzeitfehler als Symptom in der Regel erst später als der verursachende Programmfehler auftritt.

Im objektorientierten Paradigma wift manuelle Speicherverwaltung eine Reihe weiterer Probleme auf:

Die genannten Probleme werden durch die Verwendung eines Garbage Collectors größtenteils behoben. Die Aufgabe des Garbage Collectors ist die Erkennung und Freigabe nicht mehr benötigten Speichers. Hierzu ist üblicherweise Unterstützung des Compilers und des Laufzeitsystems vonnöten (besonders bei der Frage, ob sich in einer bestimmten Speicherzelle eine Referenz befindet), es bedarf jedoch keinerlei Unterstützung durch den Programmierer. Die Garbage Collection funktioniert also als ,,Automatic Memory Reclamation``.

Im folgenden Abschnitt werden die Grundbegriffe der Garbage Collection erläutert. Danach werden die Algorithmen zur Garbage Collection ,,Mark-Sweep``, ,,Mark-Compact`` sowie ,,Copying Collection`` kurz vorgestellt. Eine nähere Betrachtung dieser Algorithmen ist hilfreich, um die in Kapitel 4 geschilderten Techniken besser zu verstehen, da praktisch alle aktuellen Implementierungen zur Garbage Collection für virtuelle Maschinen auf einem oder mehreren dieser Algorithmen basieren.




next up previous contents
Next: Grundbegriffe der Garbage Collection Up: Speicherverwaltung Previous: Allokation   Inhalt

2001-02-28