Que signifie la collecte des déchets ?
Le garbage collection (GC) est une approche dynamique de la gestion automatique de la mémoire et de l'allocation du tas qui traite et identifie les blocs de mémoire morts et réaffecte le stockage pour la réutilisation. L’objectif principal du garbage collection est de réduire les fuites de mémoire.
La mise en œuvre du GC nécessite trois approches principales, comme suit :
- Mark-and-Sweep – Lors du processus lorsque la mémoire est épuisée, le GC localise toute la mémoire accessible, puis récupère la mémoire disponible.
- Comptage de références – Les objets alloués contiennent un décompte de références du numéro de référence. Lorsque le nombre de mémoire est nul, l'objet est un déchet et est ensuite détruit. La mémoire libérée retourne dans le tas de mémoire.
- Collection de copies – Il existe deux partitions de mémoire. Si la première partition est pleine, le GC localise toutes les structures de données accessibles et les copie sur la deuxième partition, compactant ainsi la mémoire après le processus GC et permettant une mémoire libre continue.
Certains langages et plates-formes de programmation avec GC intégré (par exemple Java, Lisp, C# et .Net) gèrent eux-mêmes les fuites de mémoire, permettant une programmation plus efficace.
Weendoz explique la collecte des déchets
L'approche dynamique de garbage collection en matière d'allocation automatique de tas résout les erreurs courantes et coûteuses qui entraînent souvent des défauts de programme réels lorsqu'elles ne sont pas détectées.
Parce qu’elles sont difficiles à identifier et à réparer, les erreurs d’allocation sont coûteuses. Ainsi, le garbage collection est considéré par beaucoup comme une fonctionnalité essentielle du langage qui facilite le travail du programmeur avec une gestion manuelle moindre de l'allocation du tas. Cependant, GC n’est pas parfait et les inconvénients suivants doivent être pris en compte :
- Lors de la libération de mémoire, GC consomme des ressources informatiques.
- Le processus GC est imprévisible, ce qui entraîne des retards de session dispersés.
- Lorsque les références d'objets inutilisées ne sont pas supprimées manuellement, GC provoque des fuites de mémoire logique.
- GC ne sait pas toujours quand traiter les données dans les environnements de mémoire virtuelle des ordinateurs de bureau modernes.
- Le processus GC interagit mal avec les systèmes de cache et de mémoire virtuelle, ce qui entraîne des difficultés de réglage des performances.