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:
- Rastreamento de objetos: Identifica objetos ainda acessíveis a partir dos nós raiz (campos estáticos, variáveis locais na pilha).
- Recolha de lixo: Se um objeto não tem referências, o coletor de lixo marca-o para remoção.
- 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.