用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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/155565.html
標籤:Java EE
