jstack 实用程序中的 Java 线程状态

问题描述

我使用带有和不带有 -F 标志的 jstack 实用程序在同一个 jvm (java8) 上背靠背进行了两个线程转储。以下是两个线程转储的 JVM 线程状态 -

命令:jstack -F <p_id>

329 个线程:289 个被阻止,40 个 IN_NATIVE

命令:jstack <p_id>

337 个线程:157 个 WAITING、132 个 TIMED_WAITING、48 个 RUNNABLE

当我遇到时,有两组java线程状态-

NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED doc

NEW,NEW_TRANS,IN_NATIVE,IN_NATIVE_TRANS,IN_VM,IN_VM_TRANS,IN_JAVA,IN_JAVA_TRANS,BLOCKED_TRANS doc

以下是基于上述观察的几个问题 -

  1. 两组java线程状态之间的相关性是什么,它们在什么情况下有用?我是否应该将 WAITING & TIMED_WAITING 线程状态视为 BLOCKED

  2. 两个线程转储有不同类型的线程状态,原因是什么?

  3. 当 jvm 进程响应时,我应该不使用 -F 标志吗? jvm doc

注意:第一个线程转储是用 -F 标志收集的,几秒钟后下一个线程转储被收集而没有 -F 标志。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...