Sobes.tech
Junior

O que é o coletor de lixo (Garbage Collector) em C#?

sobes.tech IA

Resposta da IA

Mecanismo automático de gestão de memória que liberta a memória ocupada por objetos aos quais já não há referências. Isto previne fugas de memória e simplifica o processo de desenvolvimento.

Princípios de funcionamento do coletor de lixo:

  1. Rastreamento de objetos: Identifica objetos ainda acessíveis a partir dos nós raiz (campos estáticos, variáveis locais na pilha).
  2. Recolha de lixo: Se um objeto não tem referências, o coletor de lixo marca-o para remoção.
  3. Libertação de memória: Liberta a memória ocupada por objetos removidos e comprime a memória restante para reduzir a fragmentação.

Gerações de objetos:

  • Geração 0: Contém objetos recentemente criados e de curta duração. A recolha ocorre frequentemente.
  • Geração 1: Contém objetos que sobreviveram a uma recolha da geração 0. A recolha ocorre com menos frequência.
  • Geração 2: Contém objetos de longa duração. A recolha ocorre raramente.

Chamada forçada ao GC (usada raramente e com precaução):

// Chamada forçada à recolha de lixo
System.GC.Collect();
// Espera pela finalização dos finalizadores pendentes
System.GC.WaitForPendingFinalizers();

O mecanismo principal de recolha de lixo no .NET é o algoritmo de marcação e compactação.