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.