Nell'articolo di Wikipedia per "traccia della garbage collection", viene fatta la seguente affermazione:
...most modern tracing garbage collectors implement some variant of the tri-color marking abstraction
In questa astrazione, gli oggetti sono raggruppati in tre gruppi: bianco, nero e grigio. L'algoritmo di tracciamento di base enumera tutti gli elementi del set di grigio, contrassegnando ogni oggetto grigio come nero fino a quando tutti gli oggetti non raggiungibili sono bianchi e possono essere eliminati.
L'articolo non è in come viene implementato il set di grigio , che ha implicazioni chiare per le prestazioni generali dell'algoritmo GC. La soluzione più diretta ed evidente è quella di modellare il set grigio come una struttura dati di puntatori agli oggetti (hash set, stack, code, qualunque), ma (tenete a mente che non ho dati su questo) questo sembra abbastanza costoso in termini di spazio, un puntatore per riferimento all'oggetto nello stack di chiamate.
In che modo la "lista grigia" è implementata nei moderni garbage collector per massimizzare l'efficienza in termini di tempo e spazio e quale tipo di sovraccarico comporta queste soluzioni?