问题描述:

I have an application running on linux server. Here are some details about the application

1. It bases on spring 3,quartz 1.6.1 and httpclient 4.1.2 to parse pages.

2. Basically its jobs will be run 1 or 12 times in one hour(most of them are once per hour).

3. All of their concurrent use default value.

My problem is the job stops running occasionally. This issue has happened twice last month. When the issue raised up last time, I did these things:

1. Checked progress and logs. The progress was still alive. But all the business logs had stopped writing for a long time.

2. Checked the gc log and it seemed all right.

3. Exported thread dump of this progress with jstack.

Although I get the thread dump, I don't know how to interpret it. Could someone please help me with this?

Best regards

Here is whole content of thread dump:

 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,[email protected]d4c0]" 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,[email protected]d4c0]" 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,[email protected]d4c0]" 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,[email protected]d4c0]" 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,[email protected]d4c0]" 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,[email protected]d4c0]" 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

"[email protected]" 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

网友答案:

To interpret the Thread dump please follow the below activity (for an example me using 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.

If anything is not clear please update. Hope it will help you to resolve your issue.

相关阅读:
Top