Le contenu de cet article explique comment utiliser les propres jmap et jhat du JDK pour surveiller l'état d'exécution des processus Java. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Pour exécuter des processus Java, JDK est livré avec de nombreux outils qui permettent aux développeurs Java de surveiller différents états du processus en cours d'exécution, tels que le nombre d'instances d'objet créées dans le processus, la consommation, la quantité de mémoire requise. , etc.
Cet article est écrit sur la base du JDK1.8.
J'ai écrit ci-dessous la classe Java la plus simple, qui contient une boucle infinie qui augmente la valeur d'un compteur toutes les 5 secondes.
package jmap; class Tool{ private int count = 0; public void Run() throws InterruptedException{ while(true){ System.out.println("Hello: " + this.count++); Thread.sleep(5000); } } } public class JMapTest { public static void main(String[] args) throws InterruptedException { Tool tool = new Tool(); tool.Run(); } }
Exécutez cette application dans Eclipse.
Ce qui suit décrit comment utiliser jmap et jhat pour surveiller ce processus en cours d'exécution.
1. Obtenez d’abord l’ID de ce processus Java en cours d’exécution : 15392. J'ai directement utilisé le Gestionnaire des tâches fourni avec Windows pour obtenir l'ID du processus.
2. Utilisez la ligne de commande suivante :
jmap -dump:format=b,file=c:tempheapstatus.bin 15392
jmap est un outil fourni par JDK et se trouve dans le dossier bin du répertoire d'installation du JDK.
L'exécution de la ligne de commande générera un fichier de vidage de tas : headstatus.bin
3. Vous pouvez maintenant utiliser un autre outil JDK, jhat, pour lire ce fichier de dump et l'analyser. Utilisez la ligne de commande :
jhat c:tempheapstatus.bin
Une fois l'analyse terminée, la sortie imprimée par jhat vous invite nous que l'instantané a été résolu, qui peut être consulté à partir du port 7000 du serveur local.
Visitez http://localhost:7000 et vous pourrez voir les résultats de l'analyse jmap.
localhost:7000 dans le navigateur :
Cliquez sur le lien hypertexte "jmap Tool" pour saisir les détails : L'image ci-dessous signifie mon Outil La variable membre de l'instance de classe @0x7166babd8, c'est-à-dire que la valeur du compteur s'est accumulée jusqu'à 49.
4. Si vous n'aimez pas la ligne de commande, vous pouvez également utiliser un plug-in Eclipse, MAT – Memory Analyzer Tool, qui peut également être utilisé avec jmap La commande jhat a la même fonction.
Une fois ce plug-in installé, il y aura une vue supplémentaire dans Eclipse :
Faites glisser le fichier de vidage du tas généré par jmap directement dans la vue MAT, et les résultats seront automatiquement analysés et affichés.
Cliquez sur le bouton "Rechercher un objet par adresse":
Vous pouvez également voir les objets que vous avez vus auparavant dans localhost:7000 Détails de l'instance :
Vous pouvez obtenir le même résultat que précédemment dans
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!