Sembra una domanda semplice, ma dopo molte letture sull'argomento, non ho ancora trovato una risposta definitiva (forse perché è così semplice).
La mia domanda è questa: quando un garbage collector compatta oggetti nell'heap, come vengono aggiornati i riferimenti a quegli oggetti nello stack? Mi vengono in mente due possibili soluzioni:
- Passa attraverso lo stack (e i riferimenti nell'heap) e aggiorna il riferimento in modo che punti alla nuova posizione dell'oggetto. In analogia con lo spostamento, sarebbe come inviare una lettera a chiunque abbia il tuo indirizzo e chiedere loro di aggiornare la propria rubrica con il tuo nuovo indirizzo.
- Fornisci una sorta di tabella di ricerca. Sarebbe come lasciare un indirizzo di spedizione all'ufficio postale locale.
I netturbini utilizzano principalmente uno di questi due metodi? Qualche altro metodo? Tutti e due?