78Fermer80
damnvoidLe 21/06/2007 à 16:32
squalyl (./77) :
dualmoo>> J'en suis totalement conscient. D'ailleurs le cas que tu soulèves pose problème, je sais qu'en ADA ces deux objets ne seront jamais libérés mais dans d'autres moteurs, je n'en n'ai aucune idée. Ces cas sont résolvables?

Il n'y a pas d'algorithmes efficace pour les gc, il n'y a que des heuristiques. Mais en pratique, les heuristiques qu'on connait aujourd'hui (hypothèse générationnelle par exemple, qui dit que les objets créés récemment ont plus de chances d'être désalloués bientot que les objets qui sont là depuis le début du programme) se démerdent pas trop mal (elles sont plus efficaces que l'incrémentage/décrémentage d'un compteur à chaque modification d'un pointeur, et trouvent aussi plus de choses à libérer).

Il y a aussi les problèmes de "semantic garbage collection", où en gros on essaye de repérer les objets qui sont toujours référencés mais qui ne seront plus jamais utilisés. C'est bien sûr indécidable dans le cas général, mais pareil, on fait des heuristiques.

C'est un sujet de recherche très intéressant.