Pourquoi n’en ont-ils pas besoin, et si quelqu’un décide de mettre en place une VM qui les utilise, quels problèmes peut-il rencontrer?
Le comptage des références est sujet aux memory leaks dues aux références cycliques. Imaginez que vous ayez un simple object “noeud” référencé à un autre noeud et supposons que vous définissiez sa référence à lui-même. Le nombre de références pour cet object sera toujours égal à 1 même s’il n’y a pas de descripteur d’une variable globale ou de stack, il ne sera donc jamais récupéré et sa mémoire fuit. Ceci est un exemple sortingvial mais toute référence cyclique aura le même problème.
Bien sûr, les références cycliques peuvent être détectées, mais il est probable que les frais généraux associés à cette opération ajoutent une complexité suffisante pour que d’autres méthodes de GC soient plus attrayantes.