next up previous contents index
Next: Ramasse-miettes temps-réel Up: Ramasse-miettes Previous: Algorithmes copiants   Contents   Index

Ramasse-miettes générationnels

La recherche en programmation indique qu'un grand nombre d'applications ont un comportement particulier en ce qui concerne l'utilisation des objets alloués. En fait, soit un objet alloué devient presque immédiatement inaccessible (ce sont des objets temporaires), soit il reste accessible très longtemps.

Ce fait est exploité dans les ramasse-miettes générationnels. Les objets de l'application sont partagés en générations selon une approximation du temps écoulé depuis leur allocation. Le nombre de ces générations est souvent compris entre 2 et 10.

Les plus jeunes générations sont parcourues fréquemment dans l'espoir de récupérer des objets jeunes inaccessibles. Un algorithme copiant est idéal pour ces générations, car il est plus rapide lorsque le nombre d'objets à récupérer est relativement important. De plus, la mémoire supplémentaire requise est un multiple de la taille de ces générations seulement, et non de l'ensemble des objets vivants.

Les plus vieilles générations sont parcourues plus rarement, car il est peu probable de pouvoir récupérer des objets dans ces générations. Un algorithme de type marquage et balayage est plus avantageux pour ces générations, car la taille totale de la mémoire à parcourir est environ la même que celle des objets vivants dans ces générations. De plus, il utilise peu de mémoire supplémentaire.

La plupart des implémentations modernes de langages avec gestion automatique de la mémoire utilisent un ramasse-miettes générationnel.


next up previous contents index
Next: Ramasse-miettes temps-réel Up: Ramasse-miettes Previous: Algorithmes copiants   Contents   Index
Robert STRANDH
2001-09-28