Wie funktioniert Go's Müllabfuhr?
Go's Müllsammler verwendet einen tri-color Mark-and-sweep Algorithmus mit einem gleichzeitigen Sweep. Während der Markenphase durchquert der Müllsammler den Objektgraphen, ausgehend von den Wurzeln, und markiert alle erreichbaren Objekte als live. Diese Phase läuft parallel mit der Anwendung, was bedeutet, dass der Müllsammler parallel zu den Anwendungsfäden laufen kann. Während der Sweep-Phase handelt der Müllsammler alle Objekte, die nicht als live markiert sind. Diese Phase ist auch gleichzeitig, und sie läuft parallel zu den Anwendungsfäden. Um die Auswirkungen der Müllsammler auf die Leistung der Anwendung zu minimieren, versucht Go's Müllsammler, die Pausenzeit zu kurz zu halten, indem er die Müllsammlerarbeiten inkrementell macht. Anstatt die gesamte Anwendung zu stoppen, um einen Müllsammlerzyklus durchzuführen, führt der Müllsammler kleine, inkrementelle Müllsammlungen im Hintergrund durch, da die Anwendung läuft. Go's Müllsammler ist so konzipiert, dass er effizient und low-overhead ist, und es erfordert keine Abstimmung oder Konfiguration durch den Müllsammler.