A partir du JDK 6, l'utilitaire "Java VisualVM" jvisualvm est inclus dans le répertoire "/bin" du JDK.

C'est un utilitaire graphique servant à analyser soit en temps réel, soit à partir d'un 'dump', une machine virtuelle Java.

Pour l'analyse en temps réel, nous préconisons d'utiliser le protocole standard de monitoring J2EE : JMX. En fonction de sa configuration, votre application peut être directement détectée par jvisualvm, dans le cas contraire il faudra s'assurer que la VM Java autorise bien les accès JMX et y accéder en spécifiant ses adresse et port.

Voici les paramètres généralement mis sur une plateforme de développement pour autoriser l'accès JMX à un Tomcat :

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.port=3333 
-Djava.net.preferIPv4Stack=true 
-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx

en remplaçant les xxx.xxx.xxx.xxx par l'adresse ip du serveur (il n'est pas possible d'utiliser "127.0.0.1").

Attention, cette configuration "authenticate=false" est fortement déconseillée en production car elle expose l'administration du tomcat au réseau. Assurez vous que le pare-feu est rigoureux ou revoyez la configuration pour activer l'authentification et le ssl.

Dans le cas d'un accès réellement distant certaines règles de pare-feu peuvent bloquer l'accès, en effet le protocole utilise un second port en complément, choisi aléatoirement.

Plus de détails sur la Documentation sur le monitoring et l'administration de Tomcat.

En terme d'outils d'analyse, nous vous recommandons d'ajouter des plugins dans jvisualvm (Menu : Tools > Plugin), le plus utile dans un premier temps est "VisualVM-MBeans" mais vous pouvez sans attendre ajouter tous les plugins disponibles par défaut et en cas de besoin en ajouter d'autres trouvés sur internet (comme un analyseur de thread dumps par exemple).

Plus d'informations sur https://visualvm.github.io/plugins.html

Un guide est disponible : (Lien en accès restreint)