Garbage collection

Garbage collection (GC) (englisch, wörtlich deutsch: Mülleinsammeln, auch Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem Speicherplatz, indem nicht mehr erreichbare Objekte im Speicher automatisch freigegeben werden.

In vielen Softwaresystemen wird Speicherplatz 'bei Bedarf' reserviert, um die Angaben zu einem Datenobjekt zu speichern. Wird nach Abarbeitung eines Programmteils das Objekt nicht mehr verwendet, so sollte der Platz für das Objekt auch wieder verfügbar gemacht werden. Diese Aufgabe erledigt eine garbage collector genannte Routine automatisch, ohne dass ein Programmierer hier explizit dran denken müsste.

Einige ältere (APL, LISP) und viele moderne Programmiersprachen haben garbage collection bereits in der Sprachdefinition. Für Programmiersprachen wie C, bei denen die Programmierer die Speicherverwaltung "von Hand" besorgen müssen, existieren Bibliotheken, die Garbage Collection implementieren.

Garbage Collection funktioniert, indem von bekanntermaßen noch benutzten Objekten ausgehend allen Verweise auf andere Objekte gefolgt wird. Auf diese Weise werden alle noch benutzten Objekte gefunden und markiert. Anschließend werden alle nicht auf diese Weise gefundenen Objekte gelöscht.

Garbage Collection verringert die Gefahr eines Speicherlecks, kann sie aber - entgegen einer weitverbreiteten Ansicht - nicht völlig ausschließen: Wenn irgendwo noch Referenzen auf eigentlich nicht mehr gebrauchte Objekte existieren, kann die Garbage Collection diese nicht als unbenutzt erkennen.

Ein besonderes Problem konventioneller Freispeichersammlung mit Referenzzählung liegt in so genannten owner cycles, bei denen Objekte Referenzen aufeinander halten, aber sonst von keinem Konsumenten im System mehr verwendet werden. Nehmen wir beispielsweise an, Objekt A halte eine Referenz auf Objekt B und umgekehrt, während der Rest des Systems ihre Dienste nicht mehr benötigt. Somit haben beide Objekte einen owner, weshalb der garbabe collector nicht ohne weiteres erkennen kann, dass sie nicht mehr benutzt werden. Die Folge hiervon ist, dass der Speicher somit für die Dauer der Programmausführung belegt bleibt. Es gibt unterschiedliche Möglichkeiten solche Situationen zu erkennen und es existieren einige Algorithmen, die solche Situationen erkennen und auflösen können.

Weblinks





Websites: Tagoror | Guajara | Tacoronte Guia | Todo Gomera | Deranet | Radioaficionados | Cinebso | Mi Buscador

Enciclopedia On Line: GNU FDL.