Section courante

A propos

Section administrative du site

Ramasse-miettes

Le ramasse-miettes, ou le «Garbage Collection» en anglais, est une ressource complète dédié à la gestion automatique de la mémoire dynamique. Elle permet de réutiliser les parties de mémoires libérer par le ou les programmes afin que d'autres programmes puis l'utiliser selon leur besoin. Il s'agit en quelque sorte d'une forme de recyclage de la mémoire. Ainsi, si on utilise pas de ramasse-miettes pour gérer la mémoire, un programme à la possibilité de soit gérer manuellement l'espace de mémoire dynamique qu'il dispose ou gérer sa mémoire comme un vulgaire tableau incrémentale où chaque morceaux libéré ne sera jamais réutilisé. Cette dernière n'est pas vraiment pratique, car plus vous utiliseriez un programme plus il consommerait de la mémoire et finirait nécessairement par toute l'utiliser et un redémarrage du système serait donc nécessaire pour réutiliser cette mémoire.

Le premier système proposant un ramasse-miettes de façon standard dans son environnement fut le langage de programmation Lisp inventé en 1958 par John McCarthy et le premier programme de ramasse-miette fut écrit par son étudiant Daniel J. Edwards. Tandis que du côté francophone, la première fois que le terme ramasse-miettes fut utilisé plutôt que le terme anglophone «Garbage Collection», date de 1970 dans les communications de Claude Pair (mathématicien, informaticien et haut fonctionnaire français) pour son cours d'informatique à l'université de Nancy en France.

Les algorithmes

Nom Description
Algorithme à comptage de références Cet algorithme permet de maintenir, pour chaque objet, le nombre de référence d'un objet. Ainsi, s'il devient nulle, alors il peut être recyclé.
Algorithme traversants Cet algorithme traverse un graphe d'objets accessible à partir de la racine pour distinguer les objets étant accessible (actuellement utilisé) par rapport aux objets étant inaccessible (plus utilisé, donc recyclable). Ils sont généralement séparés eu même en deux algorithmes : algorithme marquants et nettoyants (appelé mark and sweep collector en anglais) et algorithme copiant (appelé copy collector en anglais).
Algorithmes à générations Cet algorithme permet d'introduire, une forme de durée de vie (génération) des objets dans les différentes zones. Ainsi, on aura une zone de jeune génération d'objets (appelé Young Generation en anglais) et une zone de vieille génération ou ayant une durée de vie plus longue (appelé Old Generation ou Tenured Generation en anglais). C'est au moment du nettoyage (collection), qu'est déterminé s'il finira pas être séparé de la jeune génération pour aller dans la vieille génération, car si l'objet survit à plusieurs nettoyage de la mémoire, c'est qu'il est considéré comme ayant une durée de vie plus longue. Ainsi, on réduira le nombre de nettoyage majeure (collections majeures) de cette façon.


Dernière mise à jour : Samedi, le 27 janvier 2018