GC — soyez le ramasse-miettes

Balayez tous les objets que les racines n’atteignent plus avant que le tas ne déborde. En libérer un vivant, c’est un segfault. Un jeu sur l’accessibilité.

Vous êtes le ramasse-miettes. Balayez tout ce que les racines n’atteignent plus.

Comment jouer
  • Les objets orange sont des racines — locales et globales. Ils sont toujours vivants.
  • Un objet est vivant si vous pouvez l’atteindre en suivant les références depuis une racine. Tout le reste est un déchet.
  • Cliquez sur les déchets avant la fin du chrono. Si vous cliquez sur un objet encore accessible, vous libérez de la mémoire vivante — segfault, partie terminée.

Comment ça marche

Des objets apparaissent sur le tas avec des références entre eux. Les objets orange sont des racines — variables locales et globales — et tout ce que vous atteignez en suivant les références depuis une racine est vivant. Le reste est du déchet, à balayer avant la fin du chrono. Cliquez sur un objet vivant et vous avez libéré de la mémoire encore référencée : segfault. À partir de la vague 3, les objets morts se référencent en cycles, exactement le cas qu’un compteur de références ne peut pas libérer et qu’un collecteur traçant gère sans peine.

Un jeu sur la règle d’accessibilité au cœur des ramasse-miettes traçants. Les vrais collecteurs gèrent aussi générations, barrières d’écriture et concurrence.

Questions fréquentes

Comment le jeu détermine-t-il ce qui est un déchet ?

Par accessibilité, calculée en direct : il suit les références depuis chaque racine et marque ce qu’il trouve. Le non marqué est un déchet. C’est exactement la phase de marquage de mark-and-sweep.

Pourquoi les objets morts se pointent-ils entre eux ?

À partir de la vague 3, les déchets sont volontairement chaînés en cycles. Un compteur de références ne peut jamais les libérer, chaque objet gardant une référence entrante ; un collecteur traçant, lui, ne les atteint tout simplement jamais.

Pourquoi cliquer sur un objet vivant est-il fatal ?

Parce que libérer de la mémoire encore référencée est un use-after-free, à l’origine d’une grande part des plantages et exploits réels. Le jeu est aussi impitoyable là-dessus que votre allocateur.

Outils associés

Intégrer ce jeu

Ajoutez ce jeu gratuit à votre site :