Sobes.tech
Junior

O que é um coletor de lixo (Garbage Collector)?

sobes.tech IA

Resposta da IA

Mecanismo automático de gestão de memória que liberta objetos não utilizados no heap.

Princípios de funcionamento:

  • Detecção de acessibilidade de objetos: Rastreia os objetos aos quais os objetos vivos (acessíveis) fazem referência a partir das raízes (por exemplo, a pilha de threads).
  • Liberação de objetos inacessíveis: Os objetos sem referências são considerados "lixo" e a sua memória pode ser reutilizada.

Tipos de recolhedores de lixo (dependem da linguagem/plataforma):

  • Marcar e varrer: Marca os objetos acessíveis (marcação), depois percorre o heap e liberta os não marcados (limpeza). Pode causar fragmentação de memória.
  • Copiar: Divide o heap em duas partes. Copia os objetos vivos para a nova parte, depois limpa a antiga. Previne a fragmentação, mas requer mais memória.
  • Geração: Divide os objetos por idade em gerações. Recolhe lixo com maior frequência na "geração jovem", onde a maioria dos objetos não vive muito tempo.

Vantagens:

  • Redução da probabilidade de fugas de memória.
  • Simplificação do desenvolvimento (não é necessário libertar a memória explicitamente).

Desvantagens:

  • Pode causar atrasos (pausas) na execução do programa durante a recolha.
  • Tempo de recolha imprevisível.