Sobes.tech
Junior — Middle

Como é que a recolha automática de lixo é realizada 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 C# é implementada através de um mecanismo especial que rastreia os objetos na memória e liberta aqueles aos quais já não há referências.

Princípios básicos do GC:

  • Rastreamento de referências: O GC determina quais objetos são acessíveis a partir de referências raiz (por exemplo, variáveis locais, campos estáticos).
  • Identificação de objetos inacessíveis: Os objetos sem referências são considerados lixo.
  • Liberação de memória: O GC liberta a memória ocupada por objetos inacessíveis.
  • Gerações: Para otimizar a recolha de lixo, ela é dividida em gerações (Gen 0, Gen 1, Gen 2), permitindo recolher com mais frequência os objetos jovens e menos os de longa duração.

Exemplo em C#:

class Program
{
    static void Main()
    {
        var obj = new object();
        // uso do obj
        obj = null; // objeto torna-se inacessível
        GC.Collect(); // execução forçada do recolhedor de lixo (pouco comum em aplicações reais)
    }
}

Desta forma, o programador fica isento de gerir manualmente a memória, o que reduz erros relacionados com fugas de memória.