【问题标题】:How to interpret this thread dump?如何解释这个线程转储?
【发布时间】:2014-08-07 07:51:19
【问题描述】:

我有一个在 linux 服务器上运行的应用程序。以下是有关应用程序的一些详细信息
1.基于spring 3,quartz 1.6.1和httpclient 4.1.2解析页面。
2. 基本上它的作业会在一小时内运行 1 或 12 次(大部分是每小时一次)。
3.他们所有的并发使用默认值。
我的问题是工作偶尔会停止运行。这个问题上个月发生了两次。上次提出问题时,我做了这些事情:
1.检查进度和日志。进步仍然存在。但是所有的业务日志都停写了很久。
2.查看gc日志,好像没问题。
3. 使用 jstack 导出此进度的线程转储。
虽然我得到了线程转储,但我不知道如何解释它。有人可以帮我吗?
最好的问候

这里是线程转储的全部内容:

    2014-07-27 23:09:13
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.6-b01 mixed mode):

"Attach Listener" daemon prio=10 tid=0x000000005a9ba000 nid=0x5426 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"RMI TCP Connection(idle)" daemon prio=10 tid=0x000000005ca59000 nid=0x5215 waiting on condition [0x0000000041efe000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000ec44c338> (a java.util.concurrent.SynchronousQueue$TransferStack)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:424)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:323)
    at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:874)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:945)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"Multicast keep-alive Heartbeat Receiver thread-1414" daemon prio=10 tid=0x00002aaab9144800 nid=0x36f5 waiting on condition [0x0000000041c97000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000ec43fbf0> (a java.util.concurrent.SynchronousQueue$TransferStack)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:424)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:323)
    at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:874)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:945)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"Multicast keep-alive Heartbeat Receiver thread-1412" daemon prio=10 tid=0x00002aaab80fd800 nid=0x23e2 waiting on condition [0x00000000407e7000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000ec43fbf0> (a java.util.concurrent.SynchronousQueue$TransferStack)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:424)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:323)
    at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:874)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:945)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"RMI RenewClean-[127.0.0.1:47662,net.sf.ehcache.distribution.ConfigurableRMIClientSocketFactory@1d4c0]" daemon prio=10 tid=0x000000005b505000 nid=0x639a in Object.wait() [0x0000000040e83000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <0x00000000ed259310> (a java.lang.ref.ReferenceQueue$Lock)
    at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"RMI RenewClean-[127.0.0.1:41251,net.sf.ehcache.distribution.ConfigurableRMIClientSocketFactory@1d4c0]" daemon prio=10 tid=0x000000005b05d800 nid=0x3e97 in Object.wait() [0x0000000041f82000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <0x00000000ec73c7c0> (a java.lang.ref.ReferenceQueue$Lock)
    at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"RMI RenewClean-[127.0.0.1:39067,net.sf.ehcache.distribution.ConfigurableRMIClientSocketFactory@1d4c0]" daemon prio=10 tid=0x000000005a851000 nid=0x3d7b in Object.wait() [0x0000000041241000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000ec43fc08> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <0x00000000ec43fc08> (a java.lang.ref.ReferenceQueue$Lock)
    at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"RMI RenewClean-[127.0.0.1:33990,net.sf.ehcache.distribution.ConfigurableRMIClientSocketFactory@1d4c0]" daemon prio=10 tid=0x000000005c657800 nid=0x3d79 in Object.wait() [0x0000000041cb8000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <0x00000000ec43fab8> (a java.lang.ref.ReferenceQueue$Lock)
    at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"RMI RenewClean-[127.0.0.1:29600,net.sf.ehcache.distribution.ConfigurableRMIClientSocketFactory@1d4c0]" daemon prio=10 tid=0x000000005c977800 nid=0x3d74 in Object.wait() [0x0000000041c76000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <0x00000000ec43fae8> (a java.lang.ref.ReferenceQueue$Lock)
    at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"RMI Reaper" prio=10 tid=0x000000005c975000 nid=0x3d72 in Object.wait() [0x0000000041c55000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000ec43fb18> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <0x00000000ec43fb18> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
    at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:333)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"GC Daemon" daemon prio=10 tid=0x000000005c974000 nid=0x3d71 in Object.wait() [0x0000000041932000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at sun.misc.GC$Daemon.run(GC.java:100)
    - locked <0x00000000ec43fb48> (a sun.misc.GC$LatencyLock)

   Locked ownable synchronizers:
    - None

"RMI RenewClean-[127.0.0.1:41727,net.sf.ehcache.distribution.ConfigurableRMIClientSocketFactory@1d4c0]" daemon prio=10 tid=0x000000005c783800 nid=0x3d70 in Object.wait() [0x000000004181f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <0x00000000ec43fbc0> (a java.lang.ref.ReferenceQueue$Lock)
    at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"RMI Scheduler(0)" daemon prio=10 tid=0x000000005c783000 nid=0x3d6f waiting on condition [0x000000004172d000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000ec43fb90> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
    at java.util.concurrent.DelayQueue.take(DelayQueue.java:164)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"RMI TCP Accept-0" daemon prio=10 tid=0x000000005bb04800 nid=0x3d6e runnable [0x000000004170c000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
    - locked <0x00000000ec3a4f50> (a java.net.SocksSocketImpl)
    at java.net.ServerSocket.implAccept(ServerSocket.java:462)
    at java.net.ServerSocket.accept(ServerSocket.java:430)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"Replication Thread" daemon prio=10 tid=0x000000005bb07800 nid=0x3d6a waiting on condition [0x0000000041f61000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator.replicationThreadMain(RMIAsynchronousCacheReplicator.java:108)
    at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator.access$100(RMIAsynchronousCacheReplicator.java:56)
    at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator$ReplicationThread.run(RMIAsynchronousCacheReplicator.java:376)

   Locked ownable synchronizers:
    - None

"Replication Thread" daemon prio=10 tid=0x000000005c353800 nid=0x3d69 sleeping[0x0000000041f40000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator.replicationThreadMain(RMIAsynchronousCacheReplicator.java:108)
    at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator.access$100(RMIAsynchronousCacheReplicator.java:56)
    at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator$ReplicationThread.run(RMIAsynchronousCacheReplicator.java:376)

   Locked ownable synchronizers:
    - None

"net.sf.ehcache.CacheManager@4856d149" daemon prio=10 tid=0x000000005a86c800 nid=0x3d4a in Object.wait() [0x0000000041754000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.util.TimerThread.mainLoop(Timer.java:509)
    - locked <0x00000000ec440280> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Timer.java:462)

   Locked ownable synchronizers:
    - None

"RMI TCP Accept-38303" daemon prio=10 tid=0x000000005b7ca000 nid=0x3d49 runnable [0x0000000041220000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
    - locked <0x00000000ec3a5130> (a java.net.SocksSocketImpl)
    at java.net.ServerSocket.implAccept(ServerSocket.java:462)
    at java.net.ServerSocket.accept(ServerSocket.java:430)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - None

"Multicast Heartbeat Sender Thread" daemon prio=10 tid=0x000000005b4f2800 nid=0x3d48 in Object.wait() [0x00000000419b0000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at net.sf.ehcache.distribution.MulticastKeepaliveHeartbeatSender$MulticastServerThread.run(MulticastKeepaliveHeartbeatSender.java:146)
    - locked <0x00000000ec440c38> (a net.sf.ehcache.distribution.MulticastKeepaliveHeartbeatSender$MulticastServerThread)

   Locked ownable synchronizers:
    - None

"Multicast Heartbeat Receiver Thread" daemon prio=10 tid=0x000000005c2b7000 nid=0x3d47 runnable [0x000000004198f000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainDatagramSocketImpl.receive0(Native Method)
    - locked <0x00000000ec43b278> (a java.net.PlainDatagramSocketImpl)
    at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:145)
    - locked <0x00000000ec43b278> (a java.net.PlainDatagramSocketImpl)
    at java.net.DatagramSocket.receive(DatagramSocket.java:725)
    - locked <0x00000000dd3b7a90> (a java.net.DatagramPacket)
    - locked <0x00000000ec44ebf8> (a java.net.MulticastSocket)
    at net.sf.ehcache.distribution.MulticastKeepaliveHeartbeatReceiver$MulticastReceiverThread.run(MulticastKeepaliveHeartbeatReceiver.java:124)

   Locked ownable synchronizers:
    - None

"MultiThreadedHttpConnectionManager cleanup" daemon prio=10 tid=0x000000005a8d2000 nid=0x3c35 in Object.wait() [0x0000000041481000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000ec3150d8> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <0x00000000ec3150d8> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(MultiThreadedHttpConnectionManager.java:1122)

   Locked ownable synchronizers:
    - None

"DestroyJavaVM" prio=10 tid=0x000000005a6da000 nid=0x3a42 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"pool-1-thread-1" prio=10 tid=0x000000005aab7000 nid=0x3b1b waiting on condition [0x00000000401bd000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000ec3150f0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
    at com.teststack.news.se.NewsSearchEngine$1.run(NewsSearchEngine.java:167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
    - <0x00000000ec32e750> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"news_QuartzSchedulerThread" prio=10 tid=0x000000005b17b000 nid=0x3b1a in Object.wait() [0x0000000041b1c000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:296)
    - locked <0x00000000ec315168> (a java.lang.Object)

   Locked ownable synchronizers:
    - None

"news_Worker-10" prio=10 tid=0x000000005b069000 nid=0x3b19 in Object.wait() [0x0000000041afb000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:519)
    - locked <0x00000000ec3180f8> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

   Locked ownable synchronizers:
    - None

"news_Worker-9" prio=10 tid=0x000000005aced800 nid=0x3b18 in Object.wait() [0x0000000041ada000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:519)
    - locked <0x00000000ec317f78> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

   Locked ownable synchronizers:
    - None

"news_Worker-8" prio=10 tid=0x000000005bc75000 nid=0x3b17 in Object.wait() [0x0000000041ab9000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:519)
    - locked <0x00000000ec317ff8> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

   Locked ownable synchronizers:
    - None

"news_Worker-7" prio=10 tid=0x000000005b0af800 nid=0x3b16 in Object.wait() [0x0000000041a98000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:519)
    - locked <0x00000000ec318078> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

   Locked ownable synchronizers:
    - None

"news_Worker-6" prio=10 tid=0x000000005ac90000 nid=0x3b15 in Object.wait() [0x00000000417fe000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:519)
    - locked <0x00000000ec3182f8> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

   Locked ownable synchronizers:
    - None

"news_Worker-5" prio=10 tid=0x000000005b06f000 nid=0x3b14 in Object.wait() [0x00000000417dd000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:519)
    - locked <0x00000000ec318178> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

   Locked ownable synchronizers:
    - None

"news_Worker-4" prio=10 tid=0x000000005aee3000 nid=0x3b13 in Object.wait() [0x00000000417bc000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:519)
    - locked <0x00000000ec3181f8> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

   Locked ownable synchronizers:
    - None

"news_Worker-3" prio=10 tid=0x000000005a7c4000 nid=0x3b12 in Object.wait() [0x000000004179b000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:519)
    - locked <0x00000000ec318278> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

   Locked ownable synchronizers:
    - None

"news_Worker-2" prio=10 tid=0x000000005a806000 nid=0x3b11 in Object.wait() [0x00000000416eb000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:519)
    - locked <0x00000000ec318cf8> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

   Locked ownable synchronizers:
    - None

"news_Worker-1" prio=10 tid=0x000000005ae27000 nid=0x3b10 in Object.wait() [0x00000000402dd000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:519)
    - locked <0x00000000ec318b78> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

   Locked ownable synchronizers:
    - None

"Low Memory Detector" daemon prio=10 tid=0x000000005a796000 nid=0x3a4b runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"C2 CompilerThread1" daemon prio=10 tid=0x000000005a794000 nid=0x3a4a waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"C2 CompilerThread0" daemon prio=10 tid=0x000000005a78f000 nid=0x3a49 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Signal Dispatcher" daemon prio=10 tid=0x000000005a78c800 nid=0x3a48 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Surrogate Locker Thread (Concurrent GC)" daemon prio=10 tid=0x000000005a78a800 nid=0x3a47 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Finalizer" daemon prio=10 tid=0x000000005a768800 nid=0x3a46 in Object.wait() [0x0000000040cc7000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <0x00000000ec001680> (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)

   Locked ownable synchronizers:
    - None

"Reference Handler" daemon prio=10 tid=0x000000005a766800 nid=0x3a45 in Object.wait() [0x0000000040ca6000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
    - locked <0x00000000ec0016c8> (a java.lang.ref.Reference$Lock)

   Locked ownable synchronizers:
    - None

"VM Thread" prio=10 tid=0x000000005a75f800 nid=0x3a44 runnable 

"Concurrent Mark-Sweep GC Thread" prio=10 tid=0x000000005a704800 nid=0x3a43 runnable 
"VM Periodic Task Thread" prio=10 tid=0x000000005a7a1800 nid=0x3a4c waiting on condition 

JNI global references: 1323

【问题讨论】:

  • 这是一个堆栈跟踪。它准确地告诉你每个线程在哪个源文件中的哪一行代码,以及每个线程是如何到达那里的。
  • 您需要在您要调整的业务逻辑从您的应用程序运行时生成此类文件,该文件将显示您的逻辑的完整堆栈跟踪,您很可能会发现问题。
  • @JasonC 感谢您的快速回复。它是否表明它意外停止的任何证据?
  • @Anonymity 它告诉你每个线程在程序中的确切位置。查看您的代码并确定它是如何到达那里的以及为什么它会卡在它所在的位置。您必须进行一些调试。
  • 您可能想要清除那里的常规线程(Finalizer 等)并专注于您的应用程序线程(可能还有库线程)。您可能遇到了死锁,但您无法直接从这里看到。

标签: java multithreading jstack


【解决方案1】:

要解释线程转储,请遵循以下活动(例如我使用 linux)。

Step 1) First execute the command ps -fL <PID> where PID is process id for application server.
it will give you all thread which are running under one JVM. You need to check LWD and find out which is running from very long time, just take three or four threads pid.

Step 2) take thread dump , it will dump for all threads even for low priority threads now you need convert hexadecimal value so that you can find out which child threads PID are matching here and then you will come to know which class is creating problem.

如果有任何不清楚的地方,请更新。 希望它能帮助您解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    相关资源
    最近更新 更多