Ramasse-miettes générationnel et incémental gérant les cycles et les gros objets en utilisant des frames délimités

Ces dernières années, des recherches ont été menées sur plusieurs techniques reliées à la collection des déchets. Plusieurs découvertes centrales pour le ramassage de miettes par copie ont été réalisées. Cependant, des améliorations sont encore possibles. Dans ce mémoire, nous introduisons des nouve...

Full description

Bibliographic Details
Main Author: Adam, Sébastien
Format: Others
Published: 2008
Subjects:
Online Access:http://www.archipel.uqam.ca/1111/1/M10208.pdf
id ndltd-LACETR-oai-collectionscanada.gc.ca-QMUQ.1111
record_format oai_dc
spelling ndltd-LACETR-oai-collectionscanada.gc.ca-QMUQ.11112013-10-04T04:01:43Z Ramasse-miettes générationnel et incémental gérant les cycles et les gros objets en utilisant des frames délimités Adam, Sébastien Java virtual machine (Logiciel) Nettoyage de la mémoire (Informatique) Ces dernières années, des recherches ont été menées sur plusieurs techniques reliées à la collection des déchets. Plusieurs découvertes centrales pour le ramassage de miettes par copie ont été réalisées. Cependant, des améliorations sont encore possibles. Dans ce mémoire, nous introduisons des nouvelles techniques et de nouveaux algorithmes pour améliorer le ramassage de miettes. En particulier, nous introduisons une technique utilisant des cadres délimités pour marquer et retracer les pointeurs racines. Cette technique permet un calcul efficace de l'ensemble des racines. Elle réutilise des concepts de deux techniques existantes, card marking et remembered sets, et utilise une configuration bidirectionelle des objets pour améliorer ces concepts en stabilisant le surplus de mémoire utilisée et en réduisant la charge de travail lors du parcours des pointeurs. Nous présentons aussi un algorithme pour marquer récursivement les objets rejoignables sans utiliser de pile (éliminant le gaspillage de mémoire habituel). Nous adaptons cet algorithme pour implémenter un ramasse-miettes copiant en profondeur et améliorer la localité du heap. Nous améliorons l'algorithme de collection des miettes older-first et sa version générationnelle en ajoutant une phase de marquage garantissant la collection de toutes les miettes, incluant les structures cycliques réparties sur plusieurs fenêtres. Finalement, nous introduisons une technique pour gérer les gros objets. Pour tester nos idées, nous avons conçu et implémenté, dans la machine virtuelle libre Java SableVM, un cadre de développement portable et extensible pour la collection des miettes. Dans ce cadre, nous avons implémenté des algorithmes de collection semi-space, older-first et generational. Nos expérimentations montrent que la technique du cadre délimité procure des performances compétitives pour plusieurs benchmarks. Elles montrent aussi que, pour la plupart des benchmarks, notre algorithme de parcours en profondeur améliore la localité et augmente ainsi la performance. Nos mesures de la performance générale montrent que, utilisant nos techniques, un ramasse-miettes peut délivrer une performance compétitive et surpasser celle des ramasses-miettes existants pour plusieurs benchmarks. ______________________________________________________________________________ MOTS-CLÉS DE L’AUTEUR : Ramasse-Miettes, Machine Virtuelle, Java, SableVM. 2008 Mémoire accepté PeerReviewed application/pdf http://www.archipel.uqam.ca/1111/1/M10208.pdf Adam, Sébastien (2008). « Ramasse-miettes générationnel et incémental gérant les cycles et les gros objets en utilisant des frames délimités » Mémoire. Montréal (Québec, Canada), Université du Québec à Montréal, Maîtrise en informatique. http://www.archipel.uqam.ca/1111/
collection NDLTD
format Others
sources NDLTD
topic Java virtual machine (Logiciel)
Nettoyage de la mémoire (Informatique)
spellingShingle Java virtual machine (Logiciel)
Nettoyage de la mémoire (Informatique)
Adam, Sébastien
Ramasse-miettes générationnel et incémental gérant les cycles et les gros objets en utilisant des frames délimités
description Ces dernières années, des recherches ont été menées sur plusieurs techniques reliées à la collection des déchets. Plusieurs découvertes centrales pour le ramassage de miettes par copie ont été réalisées. Cependant, des améliorations sont encore possibles. Dans ce mémoire, nous introduisons des nouvelles techniques et de nouveaux algorithmes pour améliorer le ramassage de miettes. En particulier, nous introduisons une technique utilisant des cadres délimités pour marquer et retracer les pointeurs racines. Cette technique permet un calcul efficace de l'ensemble des racines. Elle réutilise des concepts de deux techniques existantes, card marking et remembered sets, et utilise une configuration bidirectionelle des objets pour améliorer ces concepts en stabilisant le surplus de mémoire utilisée et en réduisant la charge de travail lors du parcours des pointeurs. Nous présentons aussi un algorithme pour marquer récursivement les objets rejoignables sans utiliser de pile (éliminant le gaspillage de mémoire habituel). Nous adaptons cet algorithme pour implémenter un ramasse-miettes copiant en profondeur et améliorer la localité du heap. Nous améliorons l'algorithme de collection des miettes older-first et sa version générationnelle en ajoutant une phase de marquage garantissant la collection de toutes les miettes, incluant les structures cycliques réparties sur plusieurs fenêtres. Finalement, nous introduisons une technique pour gérer les gros objets. Pour tester nos idées, nous avons conçu et implémenté, dans la machine virtuelle libre Java SableVM, un cadre de développement portable et extensible pour la collection des miettes. Dans ce cadre, nous avons implémenté des algorithmes de collection semi-space, older-first et generational. Nos expérimentations montrent que la technique du cadre délimité procure des performances compétitives pour plusieurs benchmarks. Elles montrent aussi que, pour la plupart des benchmarks, notre algorithme de parcours en profondeur améliore la localité et augmente ainsi la performance. Nos mesures de la performance générale montrent que, utilisant nos techniques, un ramasse-miettes peut délivrer une performance compétitive et surpasser celle des ramasses-miettes existants pour plusieurs benchmarks. ______________________________________________________________________________ MOTS-CLÉS DE L’AUTEUR : Ramasse-Miettes, Machine Virtuelle, Java, SableVM.
author Adam, Sébastien
author_facet Adam, Sébastien
author_sort Adam, Sébastien
title Ramasse-miettes générationnel et incémental gérant les cycles et les gros objets en utilisant des frames délimités
title_short Ramasse-miettes générationnel et incémental gérant les cycles et les gros objets en utilisant des frames délimités
title_full Ramasse-miettes générationnel et incémental gérant les cycles et les gros objets en utilisant des frames délimités
title_fullStr Ramasse-miettes générationnel et incémental gérant les cycles et les gros objets en utilisant des frames délimités
title_full_unstemmed Ramasse-miettes générationnel et incémental gérant les cycles et les gros objets en utilisant des frames délimités
title_sort ramasse-miettes générationnel et incémental gérant les cycles et les gros objets en utilisant des frames délimités
publishDate 2008
url http://www.archipel.uqam.ca/1111/1/M10208.pdf
work_keys_str_mv AT adamsebastien ramassemiettesgenerationneletincementalgerantlescyclesetlesgrosobjetsenutilisantdesframesdelimites
_version_ 1716598190101233664