Sobes.tech
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.
    1. Marcação: Começando pelas raízes, o recolhimento de lixo percorre recursivamente o grafo de objetos, marcando todos os objetos acessíveis.
    2. 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.