Heim > Java > javaLernprogramm > 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

不言
Freigeben: 2018-10-22 16:00:47
nach vorne
3626 Leute haben es durchsucht

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();
    }
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage