Middle
O que é um coletor de lixo e como funciona?
sobes.tech IA
Resposta da IA
O Garbage Collector (GC) é um mecanismo de gestão automática de memória que aloca e liberta memória que já não é utilizada pelo programa.
Princípio de funcionamento:
- Alocação de memória: Quando um programa cria objetos, o coletor de lixo aloca espaço para eles no heap.
- Determinando acessibilidade: O coletor de lixo determina quais objetos são acessíveis a partir das "raízes" do programa. As raízes podem ser variáveis locais em funções em execução, variáveis estáticas, referências de threads, etc.
- Recolha de lixo: Os objetos que não são acessíveis a partir das raízes são considerados "lixo" e a sua memória pode ser libertada.
Existem diferentes algoritmos de recolha de lixo, por exemplo:
- Marcar e varrer (Mark-and-Sweep): O coletor percorre o grafo de objetos acessíveis a partir das raízes, marcando-os. Depois, percorre todo o heap e liberta a memória dos objetos marcados.
- Cópia (Copying): O heap é dividido em duas partes. Os objetos acessíveis são copiados de uma parte para outra, e a antiga parte é limpa.
- Geracional: Os objetos são divididos em gerações. Os objetos novos vão para a geração jovem, os antigos para a madura. A recolha de lixo ocorre com mais frequência na geração jovem, pois a maioria dos objetos tem uma vida curta.
Exemplo de funcionamento em Java (simplificado):
// O programa cria objetos no heap
Object obj1 = new Object();
Object obj2 = new Object();
// obj1 torna-se inacessível
obj1 = null;
// O coletor de lixo pode libertar a memória ocupada por obj1