Jstack - Wie Thread-Dump in Linux Get

Ein Thread-Dump ist eine Liste aller Java-Threads, die derzeit aktiv in einer Java Virtual Machine (JVM) sind. Es gibt mehr Möglichkeiten Thread-Dumps von einer JVM zu nehmen. Es ist sehr zu mehr als 1 Thread-Dump in Anspruch zu nehmen, während ein Problem wie Deadlock oder Ressourcennutzungsanalyse zu analysieren. Es ist immer besser in mehr als ein Thread-Dump bestätigen dann Schlussfolgerungen in einzelnem Versuch zu machen.







Schritt 1) ​​Holen Sie sich das PID Ihres Java-Prozess

Das erste Stück von Informationen müssen Sie in der Lage sein, ein Thread-Dump zu erhalten, ist Ihr PIDs Java-Prozess.

Die Java JDK Schiffe mit dem JPS-Befehl, der all Java-Prozess-IDs auflistet. Sie können diesen Befehl wie folgt ausführen:

Schritt 2) Fordern Sie einen Thread-Dump von der JVM

Wenn / verfügbar installiert ist, empfehlen wir das jstack-Tool. Er druckt Thread zu dem Befehlszeilenkonsole Dumps.

Um ein Thread-Dump mit jstack zu erhalten, führen Sie den folgenden Befehl ein:







Sie können die Ausgabe in Folge Thread über die Konsole Ausgabe in eine Datei umleiten Dumps / anhängen Richtlinie:

  1. Das jstack Tool ist seit JDK 1.5 zur Verfügung.
  2. jstack funktioniert auch, wenn der -Xrs Jvm Parameter aktiviert ist.
  3. Es ist nicht möglich, das jstack Tool von JDK 1.6 zu verwenden threaddumps von einem Prozess auf JDK 1.5 laufen zu nehmen.

Thread-Dump Probenahme in festen Zeitintervallen mit jstack Skript

Dieser einfache Shell-Skript dauert mehr jstack Schnappschüsse in festen Zeitintervallen: [Referenzdokument]

Verwenden Sie oben Skript wie folgt aus:

Wie das Thread-Dumps vergleichen

Ein anderer Weg, um zu sehen, welche Teile der jstack Spur verändert im Laufe der Zeit ist neben jstack Spur mit Kontext diff (Option -c) zu vergleichen:

Hier zeigt das Ergebnis nur die Orte, an denen die jstack Spur wechseln von Datei Datei.

Über Lokesh Gupta

wir haben Java 1.7 installiert, aber wenn wir jstack Befehl verwenden Sie es als Befehl sagt nicht gefunden
wir müssen installieren jstack Paket yum oder rpm verwenden, auch müssen wir die JAVA_HOME und PATH gesetzt
Auch wenn wir permanent was einstellen wollen, ist der Weg
Vielen Dank

Hallo..
Meine Anwendung läuft auf Java 5 und als ich versuchte, jstack Befehl es sagt Befehl nicht gefunden zu laufen.

Ich suchte in / opt / java 1.5 / Binärordner ich keinen jstack Befehl sehen konnte.

Wo, wie, wenn ich in Java 6 / bin-Ordner sehen kann ich jstack Befehl sehen.

Können Sie mir, wie Sie vorgehen.







In Verbindung stehende Artikel