Sobes.tech
Junior

Qu'est-ce que le ramasse-miettes (Garbage Collector) en C#?

sobes.tech IA

Réponse de l'IA

Mécanisme automatique de gestion de la mémoire qui libère la mémoire occupée par les objets auxquels il n’y a plus de références. Cela empêche les fuites de mémoire et simplifie le processus de développement.

Principes de fonctionnement du ramasse-miettes :

  1. Suivi des objets : Identifie les objets encore accessibles depuis les nœuds racine (champs statiques, variables locales sur la pile).
  2. Collecte des déchets : Si un objet n’a pas de références, le ramasse-miettes le marque pour suppression.
  3. Libération de mémoire : Libère la mémoire occupée par les objets supprimés et compresse la mémoire restante pour réduire la fragmentation.

Générations d’objets :

  • Génération 0 : Contient les objets récemment créés et de courte durée. La collecte est fréquente.
  • Génération 1 : Contient les objets ayant survécu à une collecte de la génération 0. La collecte est moins fréquente.
  • Génération 2 : Contient les objets de longue durée. La collecte est rare.

Appel forcé du GC (utilisé rarement et avec précaution) :

// Appel forcé à la collecte de déchets
System.GC.Collect();
// Attente de la finalisation des finaliseurs
System.GC.WaitForPendingFinalizers();

Le mécanisme principal de collecte des déchets en .NET est l’algorithme de marquage et de compression.