Garbage-Collection-Verfahren
Kurz: Ein Garbage Collector gibt Speicher nicht mehr erreichbarer Objekte automatisch frei. Verfahren sind Referenzzählung, Mark-and-Sweep und generationelle Sammler.
Genauer: Objekte, die vom Programm nicht mehr erreichbar sind, gelten als Müll. Der Collector findet sie, indem er von „Wurzeln“ (Stack, globale Variablen) aus alle erreichbaren Objekte markiert. Der Rest wird freigegeben. Das erspart manuelles Speichermanagement, kostet aber Laufzeit und kann Pausen verursachen.
Im Detail
- Referenzzählung: Jedes Objekt zählt Verweise. Einfach, scheitert an Zyklen (Python ergänzt Zyklus-Erkennung).
- Mark-and-Sweep: Markieren, dann einsammeln. Kann fragmentieren.
- Kopierende Sammler: Lebende Objekte in neuen Bereich kopieren, kompaktiert automatisch.
- Generationelle Sammlung: Die meisten Objekte sterben jung, daher häufig nur die junge Generation prüfen.
- Stop-the-World: Programm pausiert. Moderne Sammler (G1, ZGC, Go) arbeiten nebenläufig mit kurzen Pausen.
- Alternative: Besitzmodelle (Rust-Ownership) ohne Laufzeit-Collector.
- Speicherlecks trotz GC: Unbeabsichtigt gehaltene Verweise (Caches, Listener).
Siehe auch: Typsysteme und Typinferenz, Virtueller Speicher und Paging