Thread Dump bei Deadlocks ausgeben

Problem: Eine Java-Anwendung klemmt (vermutlich aufgrund eines Dead-Locks) und man weiss nicht, an welcher Stelle im Code. http://www.weblogic.com/docs51/techsupport/threaddump.html lieferte mir die triviale Lösung mit Java-Bord-Mitteln: Einfach dem Prozess ein SIGQUIT senden. Da hätte ich auch selbst drauf kommen können ;)

public class Test
{
  public static void main(String[] args) throws Exception
  {
    Thread.sleep(20000l);
  }
}


$> javac Test.java
$> java Test
$> kill -3 `pidof java`

Full thread dump Java HotSpot(TM) Client VM (1.4.2_04-b05 mixed mode):

"Signal Dispatcher" daemon prio=1 tid=0x0809f7d8 nid=0x1f99 runnable [0..0]

"JDWP Command Reader" daemon prio=1 tid=0x0809de40 nid=0x1f99 runnable [0..0]

"JDWP Event Helper Thread" daemon prio=1 tid=0x0809cfd8 nid=0x1f99 runnable [0..0]

"JDWP Transport Listener: dt_socket" daemon prio=1 tid=0x0809c408 nid=0x1f99 runnable [0..4d0335e0]

"Finalizer" daemon prio=1 tid=0x08095a00 nid=0x1f99 in Object.wait() [4cf22000..4cf2287c]
at java.lang.Object.wait(Native Method)
- waiting on <0x44d20490> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
- locked <0x44d20490> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=1 tid=0x08094d90 nid=0x1f99 in Object.wait() [4cea1000..4cea187c]
at java.lang.Object.wait(Native Method)
- waiting on <0x44d20380> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:429)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
- locked <0x44d20380> (a java.lang.ref.Reference$Lock)

"main" prio=1 tid=0x08052ca8 nid=0x1f99 waiting on condition [bfffc000..bfffce8c]
at java.lang.Thread.sleep(Native Method)
at Test.main(Test.java:7)

"VM Thread" prio=1 tid=0x08093a90 nid=0x1f99 runnable

"VM Periodic Task Thread" prio=1 tid=0x080a22f8 nid=0x1f99 waiting on condition
"Suspend Checker Thread" prio=1 tid=0x0809edc0 nid=0x1f99 runnable

Trackbacks

Trackback-URL für diesen Eintrag

Dieser Link ist nicht aktiv. Er enthält die Trackback-URI zu diesem Eintrag. Sie können diese URI benutzen, um Ping- und Trackbacks von Ihrem eigenen Blog zu diesem Eintrag zu schicken. Um den Link zu kopieren, klicken Sie ihn mit der rechten Maustaste an und wählen "Verknüpfung kopieren" im Internet Explorer oder "Linkadresse kopieren" in Mozilla/Firefox.

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Jochen Hayek am :

Hi,
ist vielleicht nicht sonderlich wichtig,
aber vielleicht möchtest du die o.a. URL durch diese ersetzen:

https://docs.oracle.com/cd/E13222_01/wls/docs51/techsupport/threaddump.html

Schönen Gruß
~J

Olaf am :

Die aktualisierte URL in deinem Koemmentar muss hier mal reichen. Wenn ich in all meinen Postings über die Jahre sicherstellen will, dass die URLs noch existieren, hab ich irgendwann keine anderen Hobbies mehr ;)

Die Kommentarfunktion wurde vom Besitzer dieses Blogs in diesem Eintrag deaktiviert.