Sobes.tech
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.