Il existe un aspect très délicat de tous les éboueurs que certaines descriptions pourraient passer sous silence: il s'agit de "l'analyse complète" ou de "la collecte complète". Périodiquement, au hasard, par intermittence, ils doivent scanner tous les objets. les collecteurs de génération sont plus aptes à reporter l'analyse complète et à en minimiser la durée, mais cela reste nécessaire.
Le collectionneur générationnel se concentrera sur ce que l’on appelle parfois l’espace «pépinière», mais il devra éventuellement / inévitablement s’amasser sur l’espace «ancien», générant ainsi un balayage complet de la mémoire.
Cette analyse complète est incompatible avec la quasi-totalité des systèmes de mise en cache de la mémoire et (en particulier!) Des schémas de virtualisation, en ce sens que presque tous les systèmes de mise en cache / de virtualisation de la mémoire échoueront / devront échouer lors de toute amélioration des performances dans ce cas.
La réponse clé à cette question est donc de savoir à quelle fréquence l'analyse complète est déclenchée et quelle est la gravité de ses effets lorsqu'elle se produit, et si elle peut être tolérée. cela revient à une propriété / question dépendante de l'application.
En d'autres termes, pour "la plupart" des opérations du collecteur, une cache l'aidera probablement (la cache et le "jeune" espace de la pépinière se chevaucheront généralement!), Mais il existe une périodicité, intermittente, éventuelle, inévitable, lourde, peut-être même une "augmentation massive" [dégradante] des performances lorsque l’espace "ancienne génération" est entièrement collecté et que le "taux de réussite" du cache se dégrade en très mauvais état étant donné que de nombreux objets en dehors de celui-ci sont tous récupérés dans une boucle étroite cycle de balayage / collecte. En d’autres termes, une discontinuité périodique inévitable (où estimations statistiques / moyennes / tendances de la performance, etc. sont trompeuses et inapplicables).
De nouveaux systèmes de collecte conçus pour s’intégrer aux systèmes de gestion de la mémoire sous-jacents (mise en cache / virtualisation) émergent. Il semble en effet que les approches historiques qui découplent complètement les systèmes distincts de collecte de mémoire, de mise en cache et de virtualisation ne fonctionneront pas aussi bien que les approches combinant / intégrant / traitant les trois aspects ensemble.
Voir, par exemple, la collecte de déchets sensible au cache par Zhou et Demsky.