jhsdb hsdb
TIPS
- jhsdb hsdb是jhsdb的子命令,故而阅读本文之前,请务必先阅读《jhsdb》
- 本文基于JDK 11编写,理论适用于JDK 9及更高版本,对于JDK 8及更低版本,可参照《jhsdb》中的描述使用。
本文接演《jhsdb》,探讨jhsdb hsdb子命令,也就是jhsdb的GUI模式。
要想进入,只需输入如下命令:
jhsdb hsdb [--pid pid | --exe executable --core coredump]
示例:
jhsdb hsdb --pid 81033
Java Threads
Java Threads
进入后,可看到类似如上图的界面:
其中:
- OS Thread ID:线程id
-
Inspect Thread
选择一个线程,然后点击 Java Thread 对话框中的第一个图标,即可弹出 Inspector 对话框,从中可看到对线程的诊断。
其中展示了对象头和指向对象元数据的指针,里面包括了Java类型的名字、继承关系、实现接口关系,字段信息、方法信息、运行时常量池的指针、内嵌的虚方法表(vtable)以及接口方法表(itable)等。其实都是HotSpot VM里记录线程的一些基本信息的C++对象的内容。 如果对C++不熟悉,阅读起来会有一些困难。
Stack Memory
选择一个线程,然后点击 Java Thread 对话框中的第二个图标,即可弹出 Stack Memory 对话框,里面是线程栈的内存数据。
其中: 第一列:内存地址(虚拟地址,非物理内存地址)
- 第二列:该地址上存储的数据,以字宽为单位,本文是在macOS 64-bit上跑64位的HotSpot VM JDK 11,字宽是64位(8字节)
- 第三列是:对数据的注释,竖线表示范围,横线或斜线连接范围与注释文字。
如果想查看某个对象的内容,可如下操作:
- Windows - Console
- 输入inspect 想要查看对象的地址 1 代码块
Show Java stack trace
选择一个线程,然后点击 Java Thread 对话框中的第三个图标,即可弹出 Show Java stack trace 对话框,里面展示了这个线程的线程栈
Show Thread Information
选择一个线程,然后点击 Java Thread 对话框中的第四个图标,即可弹出 Show Thread Information 相关信息,里面展示了这个线程的信息。
Find Crashes
选择一个线程,然后点击 Java Thread 对话框中的第五个图标,即可找到该线程崩溃的原因。目前我这边线程没有崩溃,所以展示不出效果。
Windows Console
然后输入诊断命令,输入help可查看所有诊断命令。和jhsdb clhsdb里面的诊断命令一致。
Tools
提供一系列工具,这些工具其实是诊断命令的一个便捷化,也都可以用诊断命令代替。
收集的HSDB相关的文章
TIPS
由于这些文章使用的JDK版本较老,里面用到的部分命令已经被废弃了,所以并不能直接使用,这些文章用于拓展思路、仅供参考。