Jstack - Comment obtenir cette discussion Dump sous Linux
Un vidage de fil est une liste de tous les threads Java qui sont actuellement actifs dans une machine virtuelle Java (JVM). Il y a plusieurs façons de prendre des décharges de fil d'une machine virtuelle Java. Il est fortement recommandé de prendre plus de 1 décharge de fil tout en analysant tout problème, comme une impasse ou une analyse de l'utilisation des ressources. Il est toujours préférable de confirmer dans plus d'une décharge de fil puis de tirer des conclusions en simple tentative.
Étape 1) Obtenez le PID de votre processus java
La première information que vous devez être en mesure d'obtenir une décharge de fil est le PID de votre processus java.
Les navires de java avec JDK la commande JPS qui énumère tous les processus java. Ids Vous pouvez exécuter cette commande comme ceci:
Étape 2) Demander un vidage de fil de la machine virtuelle Java
Si elle est installée / disponible, nous vous recommandons d'utiliser l'outil de jstack. Il imprime fil des décharges à la console de ligne de commande.
Pour obtenir une décharge de fil à l'aide jstack, exécutez la commande suivante:
Vous pouvez sortir fil consécutifs dépotoirs à un fichier en utilisant la console de redirection / append directive:
- L'outil jstack est disponible depuis JDK 1.5.
- jstack fonctionne même si le paramètre jvm -Xrs est activé.
- Il est impossible d'utiliser l'outil de jstack de JDK 1.6 pour prendre threaddumps d'un processus en cours d'exécution sur JDK 1.5.
Fil d'échantillonnage de vidage dans des intervalles de temps fixes en utilisant un script jstack
Ce simple script shell prend plusieurs clichés jstack dans des intervalles de temps fixes: [Document de référence]
Utilisez comme ceci ci-dessus script:
Comment comparer les décharges de fil
Une autre façon de voir quelles parties de la trace jstack changent au fil du temps est de comparer adjacente trace jstack utilisant diff contextuel (option -c):
Ici, le résultat montre que les endroits où les changements de trace jstack fichier à l'autre.
A propos de Lokesh Gupta
nous avons installé Java 1.7 mais quand nous utilisons jstack commande, il dit que command not found
nous avons besoin d'installer le paquet jstack en utilisant yum ou rpm, nous devons aussi définir le JAVA_HOME et PATH
Aussi, si nous voulons mettre en permanence ce qui est le chemin
Merci
Salut..
Mon application est en cours d'exécution sur Java 5 et quand j'ai essayé d'exécuter la commande jstack il dit command not found.
Je cherchai dans / opt / java 1.5 / bin je ne pouvais pas voir une commande jstack.
Où que quand je vois dans java dossier 6 / bin je peux voir la commande jstack.
Pouvez-vous me suggérer la façon de procéder.