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.