Le garbage collector, ou ramasse-miettes en français, est un mécanisme automatique de gestion de la mémoire dans les langages de programmation. Son rôle principal est de libérer la mémoire occupée par des objets qui ne sont plus utilisés par le programme.
Dans les langages dotés d'un garbage collector, comme Java, Python ou C#, le programmeur n'a pas besoin de gérer manuellement l'allocation et la libération de la mémoire. Le garbage collector surveille l'utilisation des objets et détermine quand ils deviennent inaccessibles ou inutilisés. Il les supprime alors de la mémoire, permettant de la récupérer pour d'autres usages.
Le fonctionnement du garbage collector repose généralement sur deux étapes principales :
- La détection des objets qui ne sont plus référencés par le programme
- La récupération de la mémoire occupée par ces objets
Par exemple, en Java :
public void exempleGC() {
Object obj = new Object(); // Création d'un objet
obj = null; // L'objet n'est plus référencé
// Le garbage collector pourra libérer la mémoire de cet objet
}
Le garbage collector présente plusieurs avantages, notamment la prévention des fuites de mémoire et la simplification du code. Cependant, il peut aussi avoir un impact sur les performances, car son exécution peut interrompre momentanément le programme.
Il existe différents algorithmes de garbage collection, comme le marquage-balayage, la copie ou la générationnelle, chacun ayant ses propres caractéristiques en termes de performance et d'utilisation de la mémoire.