Frage

Ist es möglich, einen Thread-Dump einer Java Web Start Anwendung zu bekommen? Und wenn ja, wie?

Es wäre schön, wenn es eine einfache Lösung wäre, die ein nicht-Entwickler (Kunde) ermöglichen würde, ein Thread-Dump zu erstellen. Alternativ ist es möglich, einen Thread-Dump programmatisch zu erstellen?

In der Java Web Start Console ich eine Liste der Themen, indem Sie ‚t‘ erhalten kann aber stacktraces sind nicht enthalten.

Wenn Antworten bestimmte Java-Versionen benötigen, bitte sagen Sie es.

War es hilfreich?

Lösung

In der Konsole drückt V statt T:

t:   dump thread list
v:   dump thread stack

Das funktioniert unter JDK6. Sie wissen nicht, über andere.

Alternativ, unter JDK5 (und möglicherweise auch früher) Sie können einen vollständigen Stack-Trace aller Threads an der Standardausgabe senden

Unter Windows:. Strg-Pause in der Java-Konsole

Unter Unix: kill -3 <java_process_id> (Z.B. -3 5555 töten). Dies wird nicht töten Ihre Anwendung.

Eine andere Sache: Wie andere sagen, können Sie die Stapel programmatisch über die Thread Klasse erhalten, aber vor JDK6 für Thread.getAllStackTraces() aufpassen, da es ein Speicherleck ist

.

http://bugs.sun.com/bugdatabase/view_bug.do? bug_id = 6434648

Grüße,

scotty

Andere Tipps

Neue JDKs (leider nicht JREs) gehören Werkzeuge wie jstack, die solche Dinge tut. JVMs von Version 5 ist JMX Erweiterungen Thread-Dumps, Speicherstatistik und vieles mehr zu erhalten. Alle Java-Anwendungen, einschließlich Web-Start-Anwendungen, haben diese Funktionalität zur Verfügung.

würden Sie müssen entweder das JDK installiert haben oder einen JMX-Client zu schreiben, die die gleiche Sache tut. Schauen Sie sich auf http://java.sun.com/javase / 6 / docs / technotes / guides / Management / mehr Informationen erhalten.

Seit 1.5 können Sie Thread.getAllStackTraces() verwenden, um eine Map zu bekommen iterieren.

Der ideale Ausgang wäre, dass von Strg- \ (oder Ctrl-Break oder ähnlichem) hergestellt, aber es scheint nicht ein dokumentierte Weg zur Herstellung diesen zu sein. Wenn Sie bereit sind, sich die JVM Sonne zu begrenzen (oder Reflexion verwenden nehme ich an) Sie graben um die sun.* Pakete haben könnte und wenn etwas interessant zeigt nach oben sehen.

Versuchen

StackTraceElement[] stack = Thread.currentThread().getStackTrace();

Dann können Sie über die Auflistung durchlaufen die oben x Stapelelemente zu zeigen, der Sie interessiert.

Seit Java 5 haben Sie das getStackTrace () -Methode der Klasse Thread. Für ältere Versionen können Sie tun:

Thread.currentThread().dumpStack();

Damit wird der Stack-Trace zu System.out drucken

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top