Wie zu erhalten und zu Analysieren Java Thread-Dumps - Sigmainfy - lernen, zu teilen und Inspire

Dieser Beitrag erläutert, wie Java-Thread-Dump mit kill und jstack erhalten und wie der Dump-Datei zu analysieren, die ein Beispiel für Dead-Lock-Analyse zu gegeben.

Warum Wir wollen einen Java-Thread-Dump

Wie man ein Java-Thread-Dump Get

Es gibt zwei Möglichkeiten, um das Java-Thread-Dump zu erhalten.

laufen Befehl „kill -3 pid“, können wir „ps -ef verwenden

grep java“, um den Java-Prozess pid zu finden, die‚kill -3 pid‘senden Sie einfach eine Anfrage an diese JVM, und standardmäßig JVM ausgegeben der Dump führt in die Standardausgabe (gleiches Ziel wie System.out.print).

  • verwenden jstack, einfacher Fahrbefehl „jstack pid“, gibt es einige Möglichkeiten für jstack, wie -f die JVM erzwingt ein Java-Thread-Dump zu tun.
  • Beachten Sie die Unterschiede zwischen den beiden oben genannten Möglichkeiten, kill -3 nur eine Anfrage schicken, aber jstack muß das Ergebnis und gibt es an die Standardausgabe erhalten. Das heißt, töten -3 einfach die Anfrage senden, und es ist resposible nicht die Java thead-Dump für die Anzeige, nachdem JVM die requst von Kill -3 erhalten, nehmen die JVM die resposiblity zur Ausgabe des dump, so sagen, wenn Sie eine haben eclipse Test-App, und in Ihrem Terminal, Sie senden Kill -3 zu diesem Java-Prozess, in dem eclipse-Ausgabefeld, sehen Sie die Ergebnisse. Auf der anderen Seite, Griffe jstack direkt die Ergebnisse und gibt es direkt an das Terminal, so dass wir die Ausgaben umleiten, so etwas wie „jstack pid> threads.dump“.

    jstack ist die bevorzugte Art und Weise.

    Beispiel für DeadLock Java Thread-Dump

    Wir können den oben Test-Code ausführen, und wir konnten die Anwendung hängen, und die Standardausgabe sehen zu einem bestimmten Zeitpunkt Punkt geklebt wird (weniger als 200 Zeilen), etwa wie folgt:

    In Verbindung stehende Artikel