Junior
Come funziona il garbage collector in JavaScript?
sobes.tech AI
Risposta dell'AI
In JavaScript, il garbage collector funziona automaticamente, identificando gli oggetti che non sono più accessibili dalle radici raggiungibili (oggetto globale, chiamata di funzione corrente, ecc.) e liberando la memoria che occupano.
Principali meccanismi:
- Contatore di riferimenti: Metodo obsoleto che conta il numero di riferimenti a un oggetto. La memoria viene liberata quando il contatore raggiunge zero. Svantaggio: non può gestire riferimenti ciclici.
- Marcatura e pulizia: Metodo moderno e più diffuso.
- Marcatura: Partendo dalle radici, il garbage collector attraversa ricorsivamente il grafo degli oggetti, marcando tutti gli oggetti accessibili.
- Pulizia: Scorre l'heap e rimuove tutti gli oggetti non marcati come accessibili.
Il vantaggio di "Marcatura e pulizia" rispetto a "Contatore di riferimenti" è che gestisce correttamente i riferimenti ciclici.
Il motore JavaScript (ad esempio, V8 in Chrome) monitora costantemente l'uso della memoria ed esegue il garbage collector secondo necessità. Lo sviluppatore non può controllare direttamente questo processo, ma può influenzarlo indirettamente evitando riferimenti inutili e gestendo il ciclo di vita di oggetti complessi.