Heim  >  Artikel  >  Java  >  So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

不言
不言nach vorne
2018-10-22 16:00:473538Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Verwendung von JDKs eigenem JMAP und JHAT zur Überwachung des laufenden Status von Java-Prozessen. Ich hoffe, dass er für Sie hilfreich ist.

Für die Ausführung von Java-Prozessen verfügt das JDK über viele Tools, mit denen Java-Entwickler verschiedene Zustände des laufenden Prozesses überwachen können, z. B. wie viele Objektinstanzen innerhalb des Prozesses erstellt werden, wie viel Speicher benötigt wird , usw.

Dieser Artikel basiert auf JDK1.8.

Ich habe unten die einfachste Java-Klasse geschrieben, die eine Endlosschleife enthält, die den Wert eines Zählers alle 5 Sekunden erhöht.

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();
    }
}

Führen Sie diese Anwendung in Eclipse aus.

Im Folgenden wird beschrieben, wie Sie mit jmap und jhat diesen laufenden Prozess überwachen.

1. Ermitteln Sie zunächst die ID dieses laufenden Java-Prozesses: 15392. Ich habe direkt den Task-Manager von Windows verwendet, um die Prozess-ID abzurufen.

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

2. Verwenden Sie die folgende Befehlszeile:

jmap -dump:format=b,file=c:tempheapstatus.bin 15392

jmap ist ein von JDK bereitgestelltes Tool und befindet sich im bin-Ordner des JDK-Installationsverzeichnisses.

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

Durch Ausführen der Befehlszeile wird eine Heap-Dump-Datei generiert: headstatus.bin

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

3. Jetzt können Sie ein anderes JDK-Tool, jhat, verwenden, um diese Dump-Datei zu lesen und zu analysieren. Verwenden Sie die Befehlszeile:

jhat c:tempheapstatus.bin

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

Nachdem die Analyse abgeschlossen ist, wird die Ausgabe von jhat-Eingabeaufforderungen gedruckt Wir haben den Snapshot aufgelöst, der über Port 7000 des lokalen Servers angezeigt werden kann.

Besuchen Sie http://localhost:7000 und Sie können die Jmap-Parsing-Ergebnisse sehen.

localhost:7000 im Browser:

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

Klicken Sie auf den Hyperlink „jmap Tool“, um die Details einzugeben: Das Bild unten bedeutet mein Tool Die Mitgliedsvariable der Klasseninstanz @0x7166babd8, dh der Wert des Zählers hat sich auf 49 akkumuliert.

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

4 Wenn Ihnen die Befehlszeile nicht gefällt, können Sie auch ein Eclipse-Plug-in, MAT – Memory Analyzer Tool, verwenden kann auch mit jmap verwendet werden. Der Befehl jhat hat die gleiche Funktion.

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

Nach der Installation dieses Plug-Ins gibt es eine zusätzliche Ansicht in Eclipse:

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

Ziehen Sie die von jmap generierte Heap-Dump-Datei direkt in die MAT-Ansicht, und die Ergebnisse werden automatisch analysiert und angezeigt.

Klicken Sie auf die Schaltfläche „Objekt anhand der Adresse suchen“:

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

Sie können die Objekte, die Sie zuvor gesehen haben, auch in localhost:7000 sehen Details der Instanz:

Sie können das gleiche Ergebnis erhalten wie zuvor in

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

So verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen

Das obige ist der detaillierte Inhalt vonSo verwenden Sie JDKs eigene jmap und jhat, um den Ausführungsstatus von Java-Prozessen zu überwachen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen