Va falloir que tu revois tes standards. Le comptage de référence est loin d'être mauvais et est même parfais dans certains cas. C'est juste qu'il n'est adapté que à certains cas d'utilisation et pas au cas général.
Il a deux inconvénients :
- de base il ne gère pas les boucles de dépendances, mais il y a moyens de contourner ce problème, et dans certains cas on peut même garantir que cela ne ce produira pas ;
- il y peu déclencher des libérations en chaine qui font qu'une simple libération peut au final prendre beaucoup de temps.
Le deuxième inconvénient qui est généralement le plus sérieux, ne correspond au final qu'au cas standard ou la mémoire est libérée explicitement. De plus la grande majorité des algorithmes de GC fonctionne en "stop the world" et on donc exactement le même problème avec en plus le fait que la pause peut ce produire n'importe quand.
Les quelques algos qui contournent ce problème sont très complexes et donc quand on peut s'en passer et les remplacer par un comptage de référence qui s'implémente très simplement, pourquoi ce privé ?
Le comptage de référence, s'il est bien fait c'est-à-dire si le comptage est automatique et que les cycle sont gérés en cas de besoin, permet bien souvent d'avoir un GC beaucoup plus simple et tout aussi efficace, et surtout beaucoup moins buggé.
[^] # Re: templates variadiques
Posté par beagf . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 6.
Va falloir que tu revois tes standards. Le comptage de référence est loin d'être mauvais et est même parfais dans certains cas. C'est juste qu'il n'est adapté que à certains cas d'utilisation et pas au cas général.
Il a deux inconvénients :
- de base il ne gère pas les boucles de dépendances, mais il y a moyens de contourner ce problème, et dans certains cas on peut même garantir que cela ne ce produira pas ;
- il y peu déclencher des libérations en chaine qui font qu'une simple libération peut au final prendre beaucoup de temps.
Le deuxième inconvénient qui est généralement le plus sérieux, ne correspond au final qu'au cas standard ou la mémoire est libérée explicitement. De plus la grande majorité des algorithmes de GC fonctionne en "stop the world" et on donc exactement le même problème avec en plus le fait que la pause peut ce produire n'importe quand.
Les quelques algos qui contournent ce problème sont très complexes et donc quand on peut s'en passer et les remplacer par un comptage de référence qui s'implémente très simplement, pourquoi ce privé ?
Le comptage de référence, s'il est bien fait c'est-à-dire si le comptage est automatique et que les cycle sont gérés en cas de besoin, permet bien souvent d'avoir un GC beaucoup plus simple et tout aussi efficace, et surtout beaucoup moins buggé.