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 :
- Suivi des objets : Identifie les objets encore accessibles depuis les nœuds racine (champs statiques, variables locales sur la pile).
- Collecte des déchets : Si un objet n’a pas de références, le ramasse-miettes le marque pour suppression.
- 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.