Utilisation de JConsole

JConsole (Java™ Monitoring and Management Console) est un outil graphique qui permet à l'utilisateur de surveiller et de gérer le comportement des applications Java.

Remarque: Etant donné que JConsole consomme des ressources système importantes, Oracle recommande son utilisation uniquement dans les environnements de développement pour la création de prototypes. La surveillance à distance est également conseillée afin d'isoler l'application JConsole de l'application surveillée.

L'outil JConsole repose sur l'API java.lang.management. Il se connecte aux applications lancées sur le même poste de travail que lui-même ou sur un autre poste de travail. Les applications doivent être configurées pour autoriser l'accès.

Lorsque JConsole se connecte à une application Java, il renvoie des informations sur l'application. Ces informations comprennent l'utilisation de la mémoire, les unités d'exécution en cours de fonctionnement et les classes chargées. Ces données vous aident à surveiller le comportement de votre application et de la JVM. Elles sont utiles à la compréhension des problèmes de performances, d'utilisation de la mémoire, de blocage ou d'interblocage.

Configuration de JConsole pour la surveillance d'une application Java

  1. L'application Java que vous souhaitez surveiller doit être démarrée avec des options de ligne de commande qui la rendent accessible à JConsole à partir d'autres systèmes ou d'autres utilisateurs. Sans ces options, JConsole ne pourra se connecter qu'aux processus appartenant au même utilisateur, sur le même système. L'exemple suivant montre le jeu d'options de surveillance le plus simple qui soit :
    -Dcom.sun.management.jmxremote.port=<port number>
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
    La valeur de <port number> doit être un port libre sur votre système. Dans cet exemple, les options authenticate et ssl sont mises à false. L'authentification par mot de passe et le chiffrement par SSL sont ainsi neutralisés. L'utilisation de ces options permet à JConsole, ou à tout autre agent JMX, de se connecter à votre application Java si elle a accès au port spécifié. N'utilisez ces options non sécurisées qu'en environnemnt de développement ou de test. Pour plus d'informations sur la configuration des options de sécurité, voir https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/overview/connectors.html.
  2. Démarrez JConsole en tapant jconsole sur la ligne de commande. Votre chemin doit contenir le répertoire bin d'une installation Java.
  3. La boîte de dialogue Nouvelle connexion de JConsole s'ouvre: entrez le nom d'hôte et le numéro de port que vous avez spécifiés à l'étape 1. Si vous exécutez JConsole sur le même poste de travail que votre application Java, conservez la valeur localhostpour le nom d'hôte. Dans le cas d'un autre poste de travail, spécifiez le nom d'hôte ou l'adresse IP du poste concerné. Laissez les zones Nom d'utilisateur et Mot de passe vides si vous avez utilisé les options spécifiées à l'étape 1.
  4. Cliquez sur connect. JConsole démarre et affiche l'onglet Summary.

Configuration de JConsole pour s'autosurveiller

JConsole peut s'autosurveiller. Cette fonction est utile pour le traitement des incidents liés à l'environnement Java.
  1. Démarrez JConsole en tapant jconsole sur la ligne de commande. Votre chemin doit contenir le répertoire bin du SDK.
  2. La boîte de dialogue JConsole New Connection s'ouvre : entrez localhost:0 dans le champ de la section Remote Process.
  3. Cliquez sur connect. JConsole démarre et affiche l'onglet Summary (récapitulatif).

Utilisation de JConsole pour surveiller une application Java

L'onglet Summary de JConsole contient des détails essentiels concernant la JVM connectée. A partir de cet onglet, vous pouvez sélectionner les autres onglets pour obtenir des informations plus précises sur un aspect donné. L'onglet Memory contient l'historique d'utilisation de chaque pool de mémoire dans la JVM, le plus utile étant l'utilisation de la mémoire du tas.

Vous pouvez également demander une exécution de récupération de place (GC, garbage collection) en cliquant sur le bouton Perform GC. Vous devez être connecté avec les options de sécurité désactivées, comme indiqué précédemment, ou être authentifié comme utilisateur de contrôle.

L'onglet Threads contient le nombre d'unités d'exécution actuellement en fonctionnement et la liste de leurs ID.

Cliquez sur l'ID d'une unité d'exécution pour obtenir son état de sa trace de pile du moment.

L'onglet Classes contient le nombre de classes actuellement chargées et le nombre de classes qui ont été chargées et déchargées depuis le démarrage de l'application. Cochez ou décochez la case verbose output pour activer ou désactiver la sortie prolixe du chargement des classes. Lorsqu'elle est active, cette sortie permet de voir la liste des classes chargées dans la JVM cliente. La sortie s'affiche dans la sortie stderr de la machine virtuelle Java du client.

L'onglet MBeans vous permet d'inspecter l'état des MBeans de plateforme et d'obtenir ainsi davantage de détails à propos de la JVM. Pour plus d'informations sur les MBeans et les extensions MXBean J9 , voir la section Language management interface de la documentation Eclipse OpenJ9 .

Enfin, l'onglet VM fournit des informations sur l'environnement dans lequel votre application Java s'exécute, y compris les arguments JVM et le chemin d'accès aux classes en cours.

Traitement des incidents fonctionnement de JConsole

JConsole est une application Swing. L'exécution de JConsole sur le même poste de travail que l'application Java que vous souhaitez surveiller affecte les performances de votre application Java. Afin de réduire son impact sur les performances de l'application surveillée, vous pouvez le lancer et le connecter à une JVM fonctionnant sur un autre poste de travail.

Comme JConsole est une application Java, vous pouvez lui transmettre des options de ligne de commande Java via l'application qui démarre JConsole en les préfixant avec –J. Par exemple, pour modifier la taille de segment de mémoire maximale utilisée par JConsole, ajoutez l'option de ligne de commande -J-Xmx< size>.

JConsole utilisant l'API Attach pour se connecter à une application, il peut seulement se connecter à d'autres machines virtuelles J9. Si vous rencontrez des problèmes lors de l'utilisation de JConsole pour surveiller une application à distance, il est possible que la cause première soit l'API Attach. Pour diagnostiquer les problèmes, voir Java Attach API.

Limitations connues

Utilisation de la liste des processus locaux
Cette liste ne fonctionne pas. Utilisez localhost:<port> dans le champ d'entrée de la section Remote Process pour vous connecter à une JVM locale.
Utilisation de l'UC dans l'onglet Overview
L'écran d'utilisation de l'UC ne fonctionne pas.

Plus d'informations

Pour plus de détails sur JConsole et les définitions des valeurs affichées, voir https://docs.oracle.com/javase/8/docs/technotes/guides/management/index.html dans la documentation Oracle .