Apple a rendu open source GCGC, un outil de visualisation des journaux Garbage Collector (GC) de Java basé sur Python 3 et pandas.
GCGC utilise un notebook Jupyter pour analyser et visualiser les fichiers journaux du GC. Un notebook est fourni pour l'analyse et il génère des tracés et des tableaux à partir des informations collectées du GC.
Après l'exécution de la première cellule du notebook, les fichiers journaux sont lus ligne par ligne et analysés selon une expression régulière définie dans un fichier Python. Ensuite, une base de données pandas est créée pour stocker les informations.
L'analyse des données est effectuée en regroupant toutes les valeurs correspondantes pour une colonne en un seul endroit, puis en filtrant les lignes de la base de données en fonction des conditions. Les données restantes sont ensuite traitées et tracées. L'utilisation d'un notebook offre également la possibilité de filtrer, de regrouper et d'autres manipulations manuelles des données.
Une liste de 17 fonctions différentes et des tracés générés sont fournis, dont certains sont : les pauses stop-the-world pendant l'exécution du programme, latency heatmap, le tas avant et après GC, le taux d'allocation du tas, le résumé des pauses, le percentile des pauses, la moyenne et la somme de durées des événements et quelques autres.
Quelques étapes sont nécessaires pour démarrer l'analyse. Tout d'abord, il est nécessaire d'activer les journaux du GC dans une JVM, en ajoutant l'option ci-dessous à la ligne de commande de l'application Java :
-Xlog:gc*:./filename.log
Après avoir cloné le projet GCGC et démarré le notebook Jupyter, ouvrez le notebook GCGC.ipynb
dans la page Web jupyter.
Dans la première cellule, il est nécessaire de configurer le chemin d'accès aux fichiers journaux du GC et les étiquettes utilisées comme description. Il est possible d'utiliser des caractères génériques pour lire plusieurs fichiers à la fois.
Après avoir appuyé sur "run all" dans le menu Cell, l'analyse du bloc-notes GCGC sera exécutée.
Voici quelques exemples de diagrammes générés :
Il est également possible de télécharger le cahier dans différents formats tels que pdf, html, markdown et asciidoc.
Actuellement, il existe certaines limitations pour les garbage collectors Shenandoah et ZGC pris en charge à partir de JDK11 et JDK 16. En fait, Shenandoah utilise deux phases par garbage collection, ce qui donne deux diagrammes tracés par phase de GC ; alors que ZGC utilise le concept de safepoints, ils ont des métriques comparables aux temps de pause, mais ZGC ne les signale pas de la même manière, ils doivent donc être activés manuellement.