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.
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.
Durch Ausführen der Befehlszeile wird eine Heap-Dump-Datei generiert: headstatus.bin
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
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:
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.
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.
Nach der Installation dieses Plug-Ins gibt es eine zusätzliche Ansicht in Eclipse:
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“:
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
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!