0

我们面临一个问题,我们的应用程序挂起,我们需要重新启动应用程序。

这是线程转储。我想了解我们如何分析线程转储,我的意思是我们有什么方法可以找到问题所在的代码。

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
4

1 回答 1

-3

线程转储从执行 kill -3 的 VM 写入系统。如果要将 JVM 的控制台输出重定向到文件,则线程转储将在该文件中。如果 JVM 在打开的控制台中运行,则线程转储将显示在其控制台中,请在此处查看完整的演示和实验室练习

于 2013-09-27T18:12:21.680 回答