java中DestroyJavaVm线程(守护线程)为什么一直处于running状态(含图和分析)

码届小王 2020-10-04 02:20:51
用visualvm监控jvm时,我发现DestroyJavaVm线程(垃圾回收器守护线程)从始至终一直处于running状态(这样岂不是一直在耗费cpu?)。
对此很好奇找到了如下答案,但也没解决疑问,Since all it is doing is joining all other running threads it does not consume any resources.这句话是说DestroyJavaVm会join其他线程,所以不会一直消耗cpu,但join其他线程本质就是wait其他线程,所以上面的visualvm监控,DestroyJavaVm不应该中间有wait状态吗,为什么自始至终都是running?求大神解答
https://www.it1352.com/975163.html

=================================================
多补充下DestroyJavaVM的其他知识(https://www.javatang.com/archives/2017/10/19/51301886.html这里搜到的)
"DestroyJavaVM"

执行main()的线程在执行完之后调用JNI中的 jni_DestroyJavaVM() 方法会唤起DestroyJavaVM 线程。在JBoss启动之后,也会唤起DestroyJavaVM线程,处于等待状态,等待其它线程(java线程和native线程)退出时通知它卸载JVM。

"DestroyJavaVM" prio=5 tid=0x00007fc6b3001000 nid=0x1903 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
...全文
1402 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧