GC — sei der Garbage Collector

Räume alle Objekte weg, die von den Wurzeln nicht mehr erreichbar sind. Ein lebendes freizugeben ist ein Segfault — ein Spiel über Erreichbarkeit.

Du bist der Garbage Collector. Räume alles weg, was die Wurzeln nicht mehr erreichen.

So wird gespielt
  • Orange Objekte sind Wurzeln — lokale und globale Variablen. Sie leben immer.
  • Ein Objekt lebt, wenn du es über Referenzen von einer Wurzel aus erreichst. Alles andere ist Müll.
  • Klicke den Müll weg, bevor die Zeit abläuft. Klickst du etwas noch Erreichbares an, hast du lebenden Speicher freigegeben — Segfault, Lauf vorbei.

So funktioniert es

Objekte erscheinen auf dem Heap mit Referenzen untereinander. Orange Objekte sind Wurzeln — lokale und globale Variablen — und alles, was du von einer Wurzel aus über Referenzen erreichst, lebt. Der Rest ist Müll, den du wegräumen musst, bevor die Zeit abläuft. Klickst du ein lebendes Objekt an, hast du Speicher freigegeben, auf den noch etwas zeigt: Segfault. Ab Welle 3 referenzieren sich die toten Objekte gegenseitig in Zyklen — genau der Fall, den Referenzzählung nicht freigeben kann und ein tracing Collector schon.

Ein Spiel über die Erreichbarkeitsregel im Kern tracing-basierter Collectors. Echte Collectors kümmern sich zusätzlich um Generationen, Write Barriers und Nebenläufigkeit.

Häufig gestellte Fragen

Wie entscheidet das Spiel, was Müll ist?

Über Erreichbarkeit, live berechnet: es folgt den Referenzen ab jeder Wurzel und markiert, was es findet. Nicht Markiertes ist Müll. Genau die Mark-Phase von Mark-and-Sweep.

Warum zeigen tote Objekte aufeinander?

Ab Welle 3 wird der Müll absichtlich zu Zyklen verkettet. Referenzzählung kann sie nie freigeben, weil jedes Objekt eine eingehende Referenz behält; ein tracing Collector erreicht sie schlicht nie.

Warum ist ein Klick auf ein lebendes Objekt tödlich?

Weil das Freigeben von Speicher, auf den noch verwiesen wird, ein Use-after-free ist — Ursache eines großen Teils echter Abstürze und Exploits. Das Spiel ist da so gnadenlos wie dein Allokator.

Verwandte Tools

Dieses Spiel einbetten

Füge dieses kostenlose Spiel zu deiner Website hinzu: