Maison  >  Article  >  Java  >  Comment utiliser jmap et jhat intégrés au JDK pour surveiller l'état d'exécution des processus Java

Comment utiliser jmap et jhat intégrés au JDK pour surveiller l'état d'exécution des processus Java

不言
不言avant
2018-10-22 16:00:473538parcourir

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.

Comment utiliser jmap et jhat intégrés au JDK pour surveiller létat dexécution des processus Java

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.

Comment utiliser jmap et jhat intégrés au JDK pour surveiller létat dexécution des processus Java

L'exécution de la ligne de commande générera un fichier de vidage de tas : headstatus.bin

Comment utiliser jmap et jhat intégrés au JDK pour surveiller létat dexécution des processus Java

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

Comment utiliser jmap et jhat intégrés au JDK pour surveiller létat dexécution des processus Java

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 :

Comment utiliser jmap et jhat intégrés au JDK pour surveiller létat dexécution des processus Java

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.

Comment utiliser jmap et jhat intégrés au JDK pour surveiller létat dexécution des processus Java

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.

Comment utiliser jmap et jhat intégrés au JDK pour surveiller létat dexécution des processus Java

Une fois ce plug-in installé, il y aura une vue supplémentaire dans Eclipse :

Comment utiliser jmap et jhat intégrés au JDK pour surveiller létat dexécution des processus Java

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":

Comment utiliser jmap et jhat intégrés au JDK pour surveiller létat dexécution des processus Java

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

Comment utiliser jmap et jhat intégrés au JDK pour surveiller létat dexécution des processus Java

Comment utiliser jmap et jhat intégrés au JDK pour surveiller létat dexécution des processus Java

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer