我们面临一个问题,我们的应用程序挂起,我们需要重新启动应用程序。
这是线程转储。我想了解我们如何分析线程转储,我的意思是我们有什么方法可以找到问题所在的代码。
2013-04-12 13:05:07
Full thread dump Java HotSpot(TM) Client VM (19.1-b02 mixed mode):
"Low Memory Detector" daemon prio=6 tid=0x00d6d800 nid=0xebc runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
"CompilerThread0" daemon prio=10 tid=0x00d60c00 nid=0x1b50 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
"Attach Listener" daemon prio=10 tid=0x00d5dc00 nid=0x16c8 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=10 tid=0x00d5a800 nid=0xd1c runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=8 tid=0x00ceec00 nid=0x1148 in Object.wait() [0x1750f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x03221158> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0x03221158> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=10 tid=0x00ced800 nid=0xff8 in Object.wait() [0x1747f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x03221058> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <0x03221058> (a java.lang.ref.Reference$Lock)
"main" prio=6 tid=0x00ca2800 nid=0x1154 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
"VM Thread" prio=10 tid=0x00cf8400 nid=0x798 runnable
"VM Periodic Task Thread" prio=10 tid=0x00d89000 nid=0xc64 waiting on condition
JNI global references: 924