WikiDer > Müllabfuhr

Garbage collection

In dem Informatik ist Müllabfuhr (englisch für "Abfallsammlung"), abgekürzt GC, eine Form der automatischen Speicherverwaltung. Der Garbage Collector versucht, Speicher freizugeben, der von Objekten verwendet wird, die nicht mehr von der Anwendung aufgerufen werden. Müllabfuhr wurde abgeschlossen 1959 erfunden von John McCarthy die Probleme der manuellen Speicherverwaltung in seiner neu entwickelten Programmiersprache zu lösen lispeln.

Viele Programmiersprachen (beispielsweise Java) haben eine Form der Garbage Collection, entweder als Teil der Spezifikation der Sprache oder für ihre praktische Implementierung (formale Sprachen wie Lambda-Kalkül beispielsweise). Solche Programmiersprachen werden als . bezeichnet Müll gesammelte Sprachen. Java und C# sind Sprachen mit einem Garbage Collector. Im objektorientierten Sprachen ohne Garbage Collector (zum Beispiel C ) ist es die Aufgabe des Entwicklers, dafür zu sorgen, dass jedes erstellte Objekt wieder zerstört wird.

Das Prinzip eines Garbage Collectors ist wie folgt:

  1. Legen Sie fest, auf welche Datenobjekte in einem Programm nicht mehr zugegriffen wird.
  2. Geben Sie den von diesen Objekten verwendeten Speicher frei.

Es ist in der Regel unmöglich festzustellen, wann ein Objekt zuletzt verwendet wurde. Daher verwendet ein Garbage Collector eine konservative Schätzung, um zu bestimmen, ob ein Objekt in Zukunft nicht mehr verwendet werden kann. Beispiel: Wenn auf ein bestimmtes Objekt keine Referenz mehr besteht, kann eine solche Referenz nie wieder erstellt werden. Dies ist das Kriterium, das von den meisten Garbage Collectors verwendet wird.

Referenzzählung

Eine primitivere Variante der Garbage Collection ist das Referenzzählen. Es verfolgt die Anzahl der Verweise auf ein Objekt mit einem Zähler. Sobald der Zähler Null erreicht, wird das betreffende Objekt bereinigt. Es hat den Ruf, langsamer zu sein als echte Garbage Collection. Dies liegt hauptsächlich daran, dass dies nicht im Hintergrund geschieht, während das Löschen eines großen Objektbaums eine Weile dauern kann. In Microsoft Visual Basic bis einschließlich Version 6 wurden Objektreferenzen so behandelt.