La JVM HotSport dispose désormais de plusieurs APIs et outils qui facilitent la résolution de problème en « live » : HotSpot Serviceability Agent ou SA.
A défaut d’un véritable outil d’APM (Application Performance Management) HotSpot Serviceability Agent constitue une véritable boîte à outils pour obtenir des informations en direct sur le comportement d’une JVM.
JDKs compatibles
Cette petite nouveauté est disponible à partir des JDKs suivants :
- 6u17+ sur Oracle Solaris et Linux
- 6u31+ sur Microsoft Windows
- JDK 7 pour toutes les plateformes
- JDK 8 pour toutes les plateformes
Binaires
L’outil se compose de 2 binaires situés dans le répertoire lib du JDK :
- Solaris / Linux :
- sa-jdi.jar
- libsaproc.so
- Microsoft Windows :
- sa-jdi.jar
- jvm.dll
Que peut-on faire avec ?
Voici quelques cas d’utilisation possibles avec cet outil. La liste n’est pas exhaustive :
- Obtenir un thread dump (jstack)
- Obtenir des informations
- sur les threads
- les paramètres de configuration de la heap
- les paramètres de la JVM
- La liste des flags de la JVM avec leurs valeurs
- Obtenir la liste des classes chargées en mémoire (classes)
- Générer sur disque le .class d’une classe (dumpclass)
- Déclencher un heap dump (dumpheap)
- etc…
Toutes les commandes qui génèrent des fichiers telle que la génération d’un heap dump le font dans le répertoire courant d’où a été lancée la JVM.
Lancement
L’outil est disponible sous une forme graphique (AWT) et sous la forme d’une console texte pure, pratique pour les environnements ne disposant pas d’interface graphique.
Version console
java -cp /opt/oracle/java/lib/sa-jdi.jar sun.jvm.hotspot.CLHSDB
La commande « help » permet d’avoir la liste des commandes disponibles.
La commande « attach » permet de s’accrocher à une JVM en indiquant son PID :
La commande « jstack » permet d’obtenir un thread dump :
Version graphique
java -cp /opt/oracle/java/lib/sa-jdi.jar sun.jvm.hotspot.HSDB
Une fois lancé, il faut « s’attacher » au processus de la JVM, il faut donc connaître son Process ID (ou PID). Utiliser jps par exemple pour le connaître.
Il est à noter que l’interface graphique dispose également d’une console interactive permettant de taper directement les commandes au clavier.
Référence
Un Wiki est disponible pour obtenir davantage d’informations.