Sobes.tech
Junior

Wie funktioniert der Garbage Collector in JavaScript?

sobes.tech KI

Antwort von AI

In JavaScript arbeitet der Garbage Collector automatisch, indem er Objekte erkennt, die nicht mehr von erreichbaren Wurzeln (globales Objekt, aktueller Funktionsaufruf usw.) zugänglich sind, und den von ihnen belegten Speicher freigibt.

Hauptmechanismen:

  • Referenzzählung: Veraltete Methode, die die Anzahl der Referenzen auf ein Objekt zählt. Der Speicher wird freigegeben, wenn der Zähler auf null sinkt. Nachteil: kann zyklische Referenzen nicht handhaben.
  • Markieren und Säubern: Moderne und am weitesten verbreitete Methode.
    1. Markieren: Beginnend bei den Wurzeln durchläuft der Garbage Collector rekursiv den Objektdiagramm und markiert alle erreichbaren Objekte.
    2. Säubern: Durchläuft den Heap und entfernt alle Objekte, die nicht als erreichbar markiert wurden.

Der Vorteil von "Markieren und Säubern" gegenüber "Referenzzählung" ist, dass es zyklische Referenzen korrekt behandelt.

Die JavaScript-Engine (z.B. V8 in Chrome) überwacht ständig die Speichernutzung und führt den Garbage Collector bei Bedarf aus. Entwickler können diesen Prozess nicht direkt steuern, aber indirekt beeinflussen, indem sie unnötige Referenzen vermeiden und den Lebenszyklus komplexer Objekte verwalten.