• [^] # Re: Destructeurs

    Posté par . En réponse à la dépêche Crystal, un langage proche de Ruby, en version 0.16. Évalué à 3.

    il se contente de collecter les cycles, donc ce qui n'est pas libéré par le comptage de référence. Donc en gros il ne va pas faire d'analyse du graphe d'objets et des piles, contrairement à des GCs comme on l'entend classiquement (Java, Go...) (je parle de cPython uniquement).

    Ben... il parcourt quand même le graphe d'objets pour détecter les cycles morts (la traversée du graphe se faisant via tp_traverse).

    Les deux gros avantages sont :

    • comme cela ne sert que pour les cycles morts, on peut faire passer le GC beaucoup moins fréquemment puisque la majorité des références sont normalement relâchées par comptage de référence. Ceci dit, quand la génération la plus âgée est parcourue, ça peut prendre du temps.

    • certains objets, qui ne peuvent par construction appartenir à un cycle de référence, sont dispensés de ce parcours (par exemple les entiers, chaînes de caractères...)