bonjour, dans un projet je doix realiser un garbage collector, j ai cru comprendre qu'il y a plusieurs algorithme, lequel me conseillez vous ???
Merci
Version imprimable
bonjour, dans un projet je doix realiser un garbage collector, j ai cru comprendre qu'il y a plusieurs algorithme, lequel me conseillez vous ???
Merci
Tu peux donner plus de détails ?
Qu'est-ce que tu as déjà fait ? Qu'as-tu lu sur le sujet ?
Alors voila je sais que pour creer un grabage collector, il y a deux phase,
1 il faut trouver les objets inutilisés
2 récuperer l espace libéré par construction d'une liste ou par copie
le truc c est que je ne sais pas comment commencer ???
Tu peux commencer par regarder comment fonctionne le garbage collector de java....
Il sagit de partir des "threads"...
Chaque thread a une liste de reference (dans la pile), tous ces objets sont marqués "utilisés"
De même ces objets utilisent des références sur d'autres objets qui sont a leur tour marqués "utilisés".
Ensuite, tu peux peaufiner... à la manière de Java avec les classes qui héritent de "Reference", (WeakReference, PhantomReference, SoftReference).
Je suis obligé d'écrire le code
:google2: est particulièrement volubile sur le sujet...
Pour commencer:
http://fr.wikipedia.org/wiki/Ramasse-miettes
La liste des liens externe te fera tomber en peu de temps sur:
http://www.memorymanagement.org/articles/recycle.html
Et en peu de temps également sur:
http://www.cs.kent.ac.uk/people/staf....html#Software
Bon lecture et bon courage ! :)
Les algorithmes de base c'est mark and sweep et stop and copy.
C'est relativement simple à coder, à moins que tu tiennes à avoir une version incrémentale ou pire, concurrente.
Après le fin du fin c'est de faire deux générations, une avec stop and copy pour les objets jeunes et l'autre avec mark and sweep pour les objets vieux.
Tu peux aussi tenter de déplacer les données pour éviter la fragmentation, mais c'est assez problématique ce genre de trucs.
Merci d'avoir donné les noms des algorithmes décrits dans la version américaine de wikipedia... Aucun intérêt dans la discussion en cours.
Un bon ouvrage sur le sujet est celui de Richard Jones : Garbage Collection: Algorithms for Automatic Dynamic Memory Management. Si tu as une bibliothèque technique bien fournie à deux pas de chez toi, c'est une excellente lecture.
Thierry
Oui enfin mark and sweep c'est suffisamment trivial que y'ait pas besoin de support (livre ou autre).
Tu parcours le graphe en marquant les éléments que tu vois. Puis tu parcoures linéairement les blocs, et ceux qui sont pas marqués peuvent être libérés.