JFR, jcmd, VisualVM : quel outil pour la mémoire Java

Dans cette série, on a déjà utilisé une demi-douzaine d’outils : les logs du GC, jstat, plusieurs commandes jcmd, Eclipse MAT. Chacun répond à une question précise, et chacun a un coût. Cet article les range, puis montre JFR, l’outil le plus complet du JDK, sur un exemple : trouver la méthode qui crée des millions d’objets. Quel outil pour quelle question Question Outil Commande Coût Le GC fait-il des pauses longues ? Le heap après GC monte-t-il ? Logs du GC -Xlog:gc*:file=gc.log à garder en production Quelle zone se remplit, en direct ? jstat jstat -gcutil <pid> 1s non indiqué ; « expérimental et non supporté » d’après sa doc Combien de heap est utilisé ? jcmd jcmd <pid> GC.heap_info moyen Quelle classe grossit ? jcmd jcmd <pid> GC.class_histogram élevé : lance un Full GC Qui retient les objets ? heap dump + Eclipse MAT jcmd <pid> GC.heap_dump élevé : un gros fichier Le Metaspace grossit-il ? jcmd jcmd <pid> VM.metaspace moyen Que fait la mémoire native ? jcmd + NMT -XX:NativeMemoryTracking=summary, puis jcmd <pid> VM.native_memory moyen Que font les threads ? jcmd jcmd <pid> Thread.print moyen Quelle méthode alloue, où sont les pauses, dans le temps ? JFR -XX:StartFlightRecording, puis jfr view faible avec la configuration default Le coût « moyen » ou « élevé » des commandes jcmd est celui qu’indique leur documentation. Chacun de ces outils a déjà servi dans un article : les logs du GC, les OutOfMemoryError, les fuites mémoire et le heap dump avec Eclipse MAT. ...

23 octobre 2026 · 5 min