Junior
Como funciona o coletor de lixo em JavaScript?
sobes.tech IA
Resposta da IA
No JavaScript, o recolhimento de lixo funciona automaticamente, identificando objetos que já não estão acessíveis a partir das raízes alcançáveis (objeto global, chamada de função atual, etc.) e libertando a memória que ocupam.
Mecanismos principais:
- Contador de referências: Método obsoleto que conta o número de referências a um objeto. A memória é libertada quando o contador chega a zero. Desvantagem: não consegue lidar com referências cíclicas.
- Marcação e varredura: Método moderno e mais comum.
- Marcação: Começando pelas raízes, o recolhimento de lixo percorre recursivamente o grafo de objetos, marcando todos os objetos acessíveis.
- Limpeza: Percorre o heap e remove todos os objetos que não foram marcados como acessíveis.
A vantagem de "Marcação e varredura" sobre "Contador de referências" é que lida corretamente com referências cíclicas.
O motor JavaScript (por exemplo, V8 no Chrome) monitora constantemente o uso de memória e executa o recolhimento de lixo conforme necessário. O desenvolvedor não pode controlar diretamente esse processo, mas pode influenciá-lo indiretamente, evitando referências desnecessárias e gerindo o ciclo de vida de objetos complexos.