Junior — Middle
Pode explicar como é implementada a recolha automática de lixo em linguagens de programação geridas?
sobes.tech IA
Resposta da IA
A recolha automática de lixo (Garbage Collection, GC) em linguagens geridas como Java é implementada para libertar automaticamente a memória ocupada por objetos que já não são utilizados pelo programa.
Princípios básicos do GC:
- Acompanhamento da acessibilidade dos objetos: O sistema determina quais objetos são acessíveis a partir de referências raiz (por exemplo, da pilha de chamadas, variáveis estáticas). Se um objeto não for acessível, significa que não é mais necessário.
- Marcação e limpeza: O GC marca todos os objetos acessíveis e depois liberta a memória ocupada por objetos inacessíveis.
- Diferentes algoritmos: Existem várias abordagens — GC de cópia, marcação e varredura, GC generacional.
Por exemplo, em Java, é utilizado um coletor generacional que divide o heap em gerações (jovem, velho). Os objetos jovens são coletados com mais frequência, pois a maioria dos objetos torna-se inútil rapidamente, aumentando a eficiência.
Assim funciona aproximadamente o GC:
// Criar um objeto
MyObject obj = new MyObject();
// Quando o obj deixa de ser utilizado e não há referências a ele,
// o GC libertará a memória automaticamente com o tempo.
O utilizador não precisa de libertar explicitamente a memória, o que reduz erros relacionados com a gestão de memória.