3

我最近使用jvisualvmjstack分析了一个 Java 8u20 的 tomcat 核心转储。对于大多数线程,我可以看到完整的堆栈跟踪,例如

Thread 21234: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) ...

但是对于当前线程(导致核心转储的线程)没有堆栈跟踪,我所看到的只是:

Thread 28888: (state = IN_JAVA)

我发现以下解释IN_JAVA

  • NEW: 刚启动,即正在初始化。
  • IN_NATIVE: 在本机代码中运行。
  • IN_NATIVE_TRANS: 对应的过渡状态。
  • IN_VM: 在虚拟机中运行。
  • IN_VM_TRANS: 对应的过渡状态。
  • IN_JAVA: 在 Java 或存根代码中运行。
  • BLOCKED: 在 vm 中被阻止。
  • BLOCKED_TRANS: 对应的过渡状态。

日志显示了从 java 调用 VM 本机代码的he_err方法,但我对 java 端堆栈的其余部分感兴趣。

任何关于为什么会这样的想法将不胜感激!

4

0 回答 0