Un ramasse-miettes Java à faible latence développé par Oracle, et destiné à la libération des applications et objets de grosse taille dans la mémoire, pourrait être livré en open source, si la proposition est approuvée par la communauté lors d’un vote qui aura lieu d’ici le 8 novembre. Appelé Z Garbage Collector (ZGC), le projet est destiné à la collecte des objets de plusieurs téraoctets, avec des temps de pause n'excédant pas 10 millisecondes et une réduction du débit inférieur à 15 % par rapport au collecteur G1GC. Cependant, selon une proposition publiée sur une liste de diffusion OpenJDK par Per Liden, lui-même membre de l'équipe travaillant sur la machine virtuelle HotSpot d’Oracle, les développeurs de ZGC ne considèrent pas ces objectifs comme « des contraintes strictes » pour toutes les charges de travail. Dans sa proposition, celui-ci appelle à la création d'un projet ZGC qu'il dirigera sous l’égide du groupe HotSpot.
Récupérer et réutiliser de la mémoire
Grâce à Z Garbage Collector, il est possible d’effectuer des opérations comme le chargement d'objets, en même temps que l'exécution des threads d'application. ZGC est capable d’exécuter des tâches comme le marquage, le traitement de référence, la relocalisation et le compactage. D’autres actions, comme le déchargement de classe et le traitement racine faible, sont effectuées simultanément. Une fonction de base de ZGC concerne l’usage de barrières de charge et de pointeurs d'objets avec symbole de couleur. L'action qui consiste à charger un objet de référence « field » dans un objet Java est soumise à une barrière de charge. Un pointeur d'objet coloré contient des informations utilisées par la barrière de charge pour déterminer quelle action effectuer avant d'autoriser un thread Java à utiliser le pointeur. Selon Per Liden, les pointeurs colorés permettent de récupérer et de réutiliser de la mémoire pendant la phase de relocalisation et de compactage, avant que les pointeurs pointant vers la zone recyclée aient été corrigés. Cela permet de réduire le nombre global d’objets dans la zone mémoire.
Une partie du travail du projet ZGC a déjà trouvé d’autres applications, notamment dans la réécriture des variables atomiques et dans une API de barrière de charge pour la collecte des rebuts. ZGC pourrait attirer l'attention et rivaliser avec le projet de ramasse-miettes Java Shenandoah de Red Hat, également conçu pour les applications à gros volumes de mémoire.
Commentaire