Garbage Collection
Contexte : Qu’est-ce que le Garbage Collection ? Dans .NET, le Garbage Collector (GC) est un gestionnaire de mémoire automatique. Il s’exécute sur un thread dédié et suit tous les objets managés alloués sur le tas managé. Lorsqu’un objet n’est plus référencé par aucune racine (variables locales, champs statiques, registres CPU, etc.), le GC le considère comme un déchet et libère sa mémoire. Cela élimine la plupart des fuites mémoire et des pointeurs pendants. Le GC utilise des heuristiques sophistiquées pour équilibrer l’utilisation de la mémoire, le débit de l’application et les temps de pause.
Exemple d’utilisation
Section intitulée « Exemple d’utilisation »using System;
public class GCDemo{ public static void ShowGenerations() { object obj = new object(); Console.WriteLine(GC.GetGeneration(obj)); // Génération actuelle (0) GC.Collect(); // Forcer une collecte (déconseillé en production) Console.WriteLine(GC.GetGeneration(obj)); // Génération après collecte }}Sortie console
Section intitulée « Sortie console »dotnet run01Remarques importantes
Section intitulée « Remarques importantes »- Automatique – Vous n’appelez jamais
freeoudelete. - Non déterministe – Le GC s’exécute lorsque nécessaire (pression mémoire) ou de manière heuristique.
- Générationnel – Les nouveaux objets sont collectés plus souvent que les anciens.
- Compactage – Le GC déplace les objets vivants pour réduire la fragmentation.
Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Traitement de gros fichiers – La lecture d’un fichier volumineux ligne par ligne avec StreamReader alloue de nombreux petits objets (chaînes). Comprendre le GC vous aide à réutiliser des tampons ou à utiliser Span<T> pour réduire les allocations, évitant ainsi des collectes Gen0 fréquentes.
Voir documentation .NET sur le Garbage Collection.