我的应用程序JVM在关机时挂起。在这种状态下,我使用jstack进行了线程转储。但是对我来说,这并不明显是什么导致此线程转储挂起。任何帮助将不胜感激。
我从转储中删除了RUNNABLE线程。
2019-04-26 20:26:11
Full thread dump OpenJDK 64-Bit Server VM (25.191-b12 mixed mode):
"TenantsRegistry-HEARTBEAT" #17 daemon prio=5 os_prio=0 tid=0x000055e33475f800 nid=0x24 in Object.wait() [0x00007f2dd9e64000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x000000072c2d1858> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)
"ExtendedDataCache-HEARTBEAT" #12 daemon prio=5 os_prio=0 tid=0x000055e33434a800 nid=0x1f in Object.wait() [0x00007f2dda769000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x000000072c07c0b8> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)
"HikariPool-1 housekeeper" #11 daemon prio=5 os_prio=0 tid=0x000055e334244800 nid=0x1e waiting on condition [0x00007f2ddaf09000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x000000072b87c350> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x000055e33355d000 nid=0x16 in Object.wait() [0x00007f2de1237000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000072aaa7e58> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
- locked <0x000000072aaa7e58> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216)
"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x000055e33355a000 nid=0x15 in Object.wait() [0x00007f2de1338000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
- locked <0x000000072aaa64d0> (a java.lang.ref.Reference$Lock)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
"VM Thread" os_prio=0 tid=0x000055e333550000 nid=0x14 runnable
"VM Periodic Task Thread" os_prio=0 tid=0x000055e3335bd000 nid=0x1b waiting on condition
JNI global references: 420