JVM无法在没有非daemon线程的情况下退出
即使没有非daemon线程,我们的嵌入式码头应用程序之一也不会退出:根据线程转储:
Threads class SMR info:
_java_thread_list=0x00007fede8001c60, length=15, elements={
0x00007ff680422000, 0x00007ff680426000, 0x00007ff680439000, 0x00007ff68043b800,
0x00007ff680445800, 0x00007ff68044a000, 0x00007ff6804c3000, 0x00007ff6804ce000,
0x00007ff682206000, 0x00007ff682576800, 0x00007ff683403800, 0x00007ff6833fc800,
0x00007ff68352a800, 0x00007ff680019800, 0x00007fede8001000
}
"Reference Handler" #2 daemon prio=10 os_prio=0 cpu=4.16ms elapsed=484197.27s tid=0x00007ff680422000 nid=0x5a09 waiting on condition [0x00007fee0c2e6000]
java.lang.Thread.State: RUNNABLE
at java.lang.ref.Reference.waitForReferencePendingList([email protected]/Native Method)
at java.lang.ref.Reference.processPendingReferences([email protected]/Reference.java:241)
at java.lang.ref.Reference$ReferenceHandler.run([email protected]/Reference.java:213)
"Finalizer" #3 daemon prio=8 os_prio=0 cpu=2.53ms elapsed=484197.26s tid=0x00007ff680426000 nid=0x5a0a in Object.wait() [0x00007fee0c1e5000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait([email protected]/Native Method)
- waiting on <0x00007fee62029b60> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x00007fee62029b60> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:176)
at java.lang.ref.Finalizer$FinalizerThread.run([email protected]/Finalizer.java:170)
"Signal Dispatcher" #4 daemon prio=9 os_prio=0 cpu=0.60ms elapsed=484197.25s tid=0x00007ff680439000 nid=0x5a0b runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 cpu=13349.31ms elapsed=484197.25s tid=0x00007ff68043b800 nid=0x5a0c waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
No compile task
"C1 CompilerThread0" #17 daemon prio=9 os_prio=0 cpu=4154.09ms elapsed=484197.25s tid=0x00007ff680445800 nid=0x5a0d waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
No compile task
"Sweeper thread" #23 daemon prio=9 os_prio=0 cpu=557.92ms elapsed=484197.25s tid=0x00007ff68044a000 nid=0x5a0e runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Service Thread" #24 daemon prio=9 os_prio=0 cpu=0.06ms elapsed=484197.20s tid=0x00007ff6804c3000 nid=0x5a10 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Common-Cleaner" #25 daemon prio=8 os_prio=0 cpu=301.60ms elapsed=484197.19s tid=0x00007ff6804ce000 nid=0x5a12 in Object.wait() [0x00007feded244000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait([email protected]/Native Method)
- waiting on <no object reference available>
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x00007fee6205e2f0> (a java.lang.ref.ReferenceQueue$Lock)
at jdk.internal.ref.CleanerImpl.run([email protected]/CleanerImpl.java:148)
at java.lang.Thread.run([email protected]/Thread.java:834)
at jdk.internal.misc.InnocuousThread.run([email protected]/InnocuousThread.java:134)
"org.apache.hadoop.fs.FileSystem$Statistics$StatisticsDataReferenceCleaner" #30 daemon prio=5 os_prio=0 cpu=0.14ms elapsed=484194.24s tid=0x00007ff682206000 nid=0x5b66 in Object.wait() [0x00007fecde6a4000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait([email protected]/Native Method)
- waiting on <0x00007fee6e5000f0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x00007fee6e5000f0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:176)
at org.apache.hadoop.fs.FileSystem$Statistics$StatisticsDataReferenceCleaner.run(FileSystem.java:3212)
at java.lang.Thread.run([email protected]/Thread.java:834)
"java-sdk-http-connection-reaper" #32 daemon prio=5 os_prio=0 cpu=349.83ms elapsed=484192.91s tid=0x00007ff682576800 nid=0x5c8f waiting on condition [0x00007fecdebb4000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep([email protected]/Native Method)
at com.amazonaws.http.IdleConnectionReaper.run(IdleConnectionReaper.java:188)
"Cleaner-0" #237 daemon prio=8 os_prio=0 cpu=291.57ms elapsed=484191.45s tid=0x00007ff683403800 nid=0x5d6d in Object.wait() [0x00007fedecc19000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait([email protected]/Native Method)
- waiting on <no object reference available>
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x00007fee6e800570> (a java.lang.ref.ReferenceQueue$Lock)
at jdk.internal.ref.CleanerImpl.run([email protected]/CleanerImpl.java:148)
at java.lang.Thread.run([email protected]/Thread.java:834)
at jdk.internal.misc.InnocuousThread.run([email protected]/InnocuousThread.java:134)
"MonitorScheduler-0" #238 daemon prio=5 os_prio=0 cpu=88.51ms elapsed=484190.84s tid=0x00007ff6833fc800 nid=0x5d74 waiting on condition [0x00007fedecd1a000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
- parking to wait for <0x00007fee6e84aee0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:194)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await([email protected]/AbstractQueuedSynchronizer.java:2081)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take([email protected]/ScheduledThreadPoolExecutor.java:1170)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take([email protected]/ScheduledThreadPoolExecutor.java:899)
at java.util.concurrent.ThreadPoolExecutor.getTask([email protected]/ThreadPoolExecutor.java:1054)
at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
at java.lang.Thread.run([email protected]/Thread.java:834)
"parent-monitor-0" #247 daemon prio=5 os_prio=0 cpu=0.99ms elapsed=484190.22s tid=0x00007ff68352a800 nid=0x5d85 waiting on condition [0x00007fe8b3dfc000]
java.lang.Thread.State: RUNNABLE
at java.lang.Shutdown.halt0([email protected]/Native Method)
at java.lang.Shutdown.halt([email protected]/Shutdown.java:152)
- locked <0x00007fee621d7bf0> (a java.lang.Shutdown$Lock)
at java.lang.Shutdown.exit([email protected]/Shutdown.java:166)
- locked <0x00007fee621d7c00> (a java.lang.Shutdown$Lock)
at java.lang.Runtime.exit([email protected]/Runtime.java:115)
at java.lang.System.exit([email protected]/System.java:1746)
at org.apache.druid.indexing.worker.executor.ExecutorLifecycle$1.run(ExecutorLifecycle.java:164)
at java.util.concurrent.Executors$RunnableAdapter.call([email protected]/Executors.java:515)
at java.util.concurrent.FutureTask.run([email protected]/FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1128)
at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
at java.lang.Thread.run([email protected]/Thread.java:834)
"DestroyJavaVM" #463 prio=5 os_prio=0 cpu=7216.70ms elapsed=482936.25s tid=0x00007ff680019800 nid=0x5a02 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Attach Listener" #466 daemon prio=9 os_prio=0 cpu=1.70ms elapsed=0.10s tid=0x00007fede8001000 nid=0xfd11 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"VM Thread" os_prio=0 cpu=11984.02ms elapsed=484197.27s tid=0x00007ff680419800 nid=0x5a08 runnable
"GC Thread#0" os_prio=0 cpu=3347.56ms elapsed=484197.30s tid=0x00007ff680044000 nid=0x5a03 runnable
"GC Thread#1" os_prio=0 cpu=3543.94ms elapsed=484196.38s tid=0x00007fee00001000 nid=0x5a1e runnable
"GC Thread#2" os_prio=0 cpu=3272.22ms elapsed=484196.38s tid=0x00007fee00002800 nid=0x5a1f runnable
"GC Thread#3" os_prio=0 cpu=3355.05ms elapsed=484196.38s tid=0x00007fee00004000 nid=0x5a20 runnable
"GC Thread#42" os_prio=0 cpu=3385.71ms elapsed=484196.38s tid=0x00007fee00046800 nid=0x5a47 runnable
"G1 Main Marker" os_prio=0 cpu=9.86ms elapsed=484197.30s tid=0x00007ff680088800 nid=0x5a04 runnable
"G1 Conc#0" os_prio=0 cpu=2674.73ms elapsed=484197.30s tid=0x00007ff68008a000 nid=0x5a05 runnable
"G1 Conc#1" os_prio=0 cpu=2662.56ms elapsed=484196.12s tid=0x00007fee10001000 nid=0x5a7f runnable
"G1 Conc#2" os_prio=0 cpu=2665.72ms elapsed=484196.12s tid=0x00007fee10002800 nid=0x5a80 runnable
"G1 Conc#3" os_prio=0 cpu=2668.94ms elapsed=484196.12s tid=0x00007fee10004000 nid=0x5a82 runnable
"G1 Refine#0" os_prio=0 cpu=-0.00ms elapsed=484197.29s tid=0x00007ff6803af000 nid=0x5a06 runnable
"G1 Refine#1" os_prio=0 cpu=-0.00ms elapsed=483424.06s tid=0x00007fee04001000 nid=0x95eb runnable
"G1 Refine#2" os_prio=0 cpu=-0.00ms elapsed=483424.06s tid=0x00007fe7580e0000 nid=0x95ec runnable
"G1 Refine#3" os_prio=0 cpu=-0.00ms elapsed=483424.06s tid=0x00007fe76c0a0800 nid=0x95ed runnable
"G1 Young RemSet Sampling" os_prio=0 cpu=288497.10ms elapsed=484197.29s tid=0x00007ff6803b1000 nid=0x5a07 runnable
JNI global refs: 34, weak refs: 0
我们在Surface非daemon线程中添加了一些附加的日志记录,并且它记录了线程:nettyclients-2-2 -1,5,主
作为非守护程序。但是,我没有在线程转储中看到此线程。 如何确定阻止此过程退出的是什么?
One of our embedded jetty applications doesn't exit even though there are no non-daemon threads according to the thread dump:
Threads class SMR info:
_java_thread_list=0x00007fede8001c60, length=15, elements={
0x00007ff680422000, 0x00007ff680426000, 0x00007ff680439000, 0x00007ff68043b800,
0x00007ff680445800, 0x00007ff68044a000, 0x00007ff6804c3000, 0x00007ff6804ce000,
0x00007ff682206000, 0x00007ff682576800, 0x00007ff683403800, 0x00007ff6833fc800,
0x00007ff68352a800, 0x00007ff680019800, 0x00007fede8001000
}
"Reference Handler" #2 daemon prio=10 os_prio=0 cpu=4.16ms elapsed=484197.27s tid=0x00007ff680422000 nid=0x5a09 waiting on condition [0x00007fee0c2e6000]
java.lang.Thread.State: RUNNABLE
at java.lang.ref.Reference.waitForReferencePendingList([email protected]/Native Method)
at java.lang.ref.Reference.processPendingReferences([email protected]/Reference.java:241)
at java.lang.ref.Reference$ReferenceHandler.run([email protected]/Reference.java:213)
"Finalizer" #3 daemon prio=8 os_prio=0 cpu=2.53ms elapsed=484197.26s tid=0x00007ff680426000 nid=0x5a0a in Object.wait() [0x00007fee0c1e5000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait([email protected]/Native Method)
- waiting on <0x00007fee62029b60> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x00007fee62029b60> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:176)
at java.lang.ref.Finalizer$FinalizerThread.run([email protected]/Finalizer.java:170)
"Signal Dispatcher" #4 daemon prio=9 os_prio=0 cpu=0.60ms elapsed=484197.25s tid=0x00007ff680439000 nid=0x5a0b runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 cpu=13349.31ms elapsed=484197.25s tid=0x00007ff68043b800 nid=0x5a0c waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
No compile task
"C1 CompilerThread0" #17 daemon prio=9 os_prio=0 cpu=4154.09ms elapsed=484197.25s tid=0x00007ff680445800 nid=0x5a0d waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
No compile task
"Sweeper thread" #23 daemon prio=9 os_prio=0 cpu=557.92ms elapsed=484197.25s tid=0x00007ff68044a000 nid=0x5a0e runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Service Thread" #24 daemon prio=9 os_prio=0 cpu=0.06ms elapsed=484197.20s tid=0x00007ff6804c3000 nid=0x5a10 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Common-Cleaner" #25 daemon prio=8 os_prio=0 cpu=301.60ms elapsed=484197.19s tid=0x00007ff6804ce000 nid=0x5a12 in Object.wait() [0x00007feded244000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait([email protected]/Native Method)
- waiting on <no object reference available>
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x00007fee6205e2f0> (a java.lang.ref.ReferenceQueue$Lock)
at jdk.internal.ref.CleanerImpl.run([email protected]/CleanerImpl.java:148)
at java.lang.Thread.run([email protected]/Thread.java:834)
at jdk.internal.misc.InnocuousThread.run([email protected]/InnocuousThread.java:134)
"org.apache.hadoop.fs.FileSystem$Statistics$StatisticsDataReferenceCleaner" #30 daemon prio=5 os_prio=0 cpu=0.14ms elapsed=484194.24s tid=0x00007ff682206000 nid=0x5b66 in Object.wait() [0x00007fecde6a4000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait([email protected]/Native Method)
- waiting on <0x00007fee6e5000f0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x00007fee6e5000f0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:176)
at org.apache.hadoop.fs.FileSystem$Statistics$StatisticsDataReferenceCleaner.run(FileSystem.java:3212)
at java.lang.Thread.run([email protected]/Thread.java:834)
"java-sdk-http-connection-reaper" #32 daemon prio=5 os_prio=0 cpu=349.83ms elapsed=484192.91s tid=0x00007ff682576800 nid=0x5c8f waiting on condition [0x00007fecdebb4000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep([email protected]/Native Method)
at com.amazonaws.http.IdleConnectionReaper.run(IdleConnectionReaper.java:188)
"Cleaner-0" #237 daemon prio=8 os_prio=0 cpu=291.57ms elapsed=484191.45s tid=0x00007ff683403800 nid=0x5d6d in Object.wait() [0x00007fedecc19000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait([email protected]/Native Method)
- waiting on <no object reference available>
at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x00007fee6e800570> (a java.lang.ref.ReferenceQueue$Lock)
at jdk.internal.ref.CleanerImpl.run([email protected]/CleanerImpl.java:148)
at java.lang.Thread.run([email protected]/Thread.java:834)
at jdk.internal.misc.InnocuousThread.run([email protected]/InnocuousThread.java:134)
"MonitorScheduler-0" #238 daemon prio=5 os_prio=0 cpu=88.51ms elapsed=484190.84s tid=0x00007ff6833fc800 nid=0x5d74 waiting on condition [0x00007fedecd1a000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
- parking to wait for <0x00007fee6e84aee0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:194)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await([email protected]/AbstractQueuedSynchronizer.java:2081)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take([email protected]/ScheduledThreadPoolExecutor.java:1170)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take([email protected]/ScheduledThreadPoolExecutor.java:899)
at java.util.concurrent.ThreadPoolExecutor.getTask([email protected]/ThreadPoolExecutor.java:1054)
at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
at java.lang.Thread.run([email protected]/Thread.java:834)
"parent-monitor-0" #247 daemon prio=5 os_prio=0 cpu=0.99ms elapsed=484190.22s tid=0x00007ff68352a800 nid=0x5d85 waiting on condition [0x00007fe8b3dfc000]
java.lang.Thread.State: RUNNABLE
at java.lang.Shutdown.halt0([email protected]/Native Method)
at java.lang.Shutdown.halt([email protected]/Shutdown.java:152)
- locked <0x00007fee621d7bf0> (a java.lang.Shutdown$Lock)
at java.lang.Shutdown.exit([email protected]/Shutdown.java:166)
- locked <0x00007fee621d7c00> (a java.lang.Shutdown$Lock)
at java.lang.Runtime.exit([email protected]/Runtime.java:115)
at java.lang.System.exit([email protected]/System.java:1746)
at org.apache.druid.indexing.worker.executor.ExecutorLifecycle$1.run(ExecutorLifecycle.java:164)
at java.util.concurrent.Executors$RunnableAdapter.call([email protected]/Executors.java:515)
at java.util.concurrent.FutureTask.run([email protected]/FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1128)
at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
at java.lang.Thread.run([email protected]/Thread.java:834)
"DestroyJavaVM" #463 prio=5 os_prio=0 cpu=7216.70ms elapsed=482936.25s tid=0x00007ff680019800 nid=0x5a02 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Attach Listener" #466 daemon prio=9 os_prio=0 cpu=1.70ms elapsed=0.10s tid=0x00007fede8001000 nid=0xfd11 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"VM Thread" os_prio=0 cpu=11984.02ms elapsed=484197.27s tid=0x00007ff680419800 nid=0x5a08 runnable
"GC Thread#0" os_prio=0 cpu=3347.56ms elapsed=484197.30s tid=0x00007ff680044000 nid=0x5a03 runnable
"GC Thread#1" os_prio=0 cpu=3543.94ms elapsed=484196.38s tid=0x00007fee00001000 nid=0x5a1e runnable
"GC Thread#2" os_prio=0 cpu=3272.22ms elapsed=484196.38s tid=0x00007fee00002800 nid=0x5a1f runnable
"GC Thread#3" os_prio=0 cpu=3355.05ms elapsed=484196.38s tid=0x00007fee00004000 nid=0x5a20 runnable
"GC Thread#42" os_prio=0 cpu=3385.71ms elapsed=484196.38s tid=0x00007fee00046800 nid=0x5a47 runnable
"G1 Main Marker" os_prio=0 cpu=9.86ms elapsed=484197.30s tid=0x00007ff680088800 nid=0x5a04 runnable
"G1 Conc#0" os_prio=0 cpu=2674.73ms elapsed=484197.30s tid=0x00007ff68008a000 nid=0x5a05 runnable
"G1 Conc#1" os_prio=0 cpu=2662.56ms elapsed=484196.12s tid=0x00007fee10001000 nid=0x5a7f runnable
"G1 Conc#2" os_prio=0 cpu=2665.72ms elapsed=484196.12s tid=0x00007fee10002800 nid=0x5a80 runnable
"G1 Conc#3" os_prio=0 cpu=2668.94ms elapsed=484196.12s tid=0x00007fee10004000 nid=0x5a82 runnable
"G1 Refine#0" os_prio=0 cpu=-0.00ms elapsed=484197.29s tid=0x00007ff6803af000 nid=0x5a06 runnable
"G1 Refine#1" os_prio=0 cpu=-0.00ms elapsed=483424.06s tid=0x00007fee04001000 nid=0x95eb runnable
"G1 Refine#2" os_prio=0 cpu=-0.00ms elapsed=483424.06s tid=0x00007fe7580e0000 nid=0x95ec runnable
"G1 Refine#3" os_prio=0 cpu=-0.00ms elapsed=483424.06s tid=0x00007fe76c0a0800 nid=0x95ed runnable
"G1 Young RemSet Sampling" os_prio=0 cpu=288497.10ms elapsed=484197.29s tid=0x00007ff6803b1000 nid=0x5a07 runnable
JNI global refs: 34, weak refs: 0
We added some additional logging in the code to surface non-daemon threads and it logged thread: nettyClientUtils-2-1,5,main
as non daemon. However, I dont see this thread in the thread dump.
How can I identify what is blocking this process from exiting?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论