Go's Garbage Collection-Implementierung
Go ist eine Sprache, die Garbage Collection für die automatische Speicherverwaltung implementiert. Die ersten Versionen von Go verwendeten einen konservativen Mark-and-Sweep-Kollektor, aber die Implementierung hat sich seitdem weiterentwickelt.
Go 1.1 bis 1.3 GC-Updates:
- Gleichzeitiger Sweep für kürzere Pausenzeiten
- Völlig präziser Müll Sammlung
Go 1.4 GC-Pläne:
- Hybrid Stop-the-World/Concurrent Collector
- Dreifarbige Markierung- und-Sweep-Algorithmus
- Nicht-generationeller und nicht komprimierend
Go's Garbage Collection-Eigenschaften:
-
Mark-and-Sweep: Beinhaltet das Markieren von Objekten, die sich noch befinden referenziert und fegt das Unmarkierte Objekte.
-
Nicht generationsbezogen: Teilt den Heap nicht basierend auf dem Alter des Objekts in verschiedene Generationen.
-
Nicht komprimierend: Verschiebt sich nicht lebende Objekte im Speicher.
-
Völlig präzise: Verfolgt genau alle Verweise auf Objekte, wodurch die Möglichkeit baumelnder Zeiger beseitigt wird.
-
Stop-the-world: Pausiert das Programm während der Speicherbereinigung (in Go 1.4), was zu Pausen führt.
-
Geringe Latenz: Zielt auf kurze Pausenzeiten während des Mülls ab Sammlung.
Überlegungen zum Ersetzen des GC von Go:
Der Austausch des Garbage Collectors von Go ist ein umstrittenes Thema. Einige zu berücksichtigende Faktoren sind:
-
Generational GC: Bietet möglicherweise keine wesentlichen Leistungsverbesserungen für kleinere Heaps.
-
Unsicheres Paket: Macht Es ist eine Herausforderung, vollständig präzise und kompakte Garbage Collectors zu implementieren.
Das obige ist der detaillierte Inhalt vonWie funktioniert die Garbage Collection von Go und welche Kompromisse gibt es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!