本文知识点
-
HSDB的使用
-
HSDB查看栈信息
-
HSDB查看堆信息
-
Class对象,static对象,Klass的关系
-
需要注意, 本文所用JDK环境为JDK11,网上有很多博客是基于JDK1.7, 两者的方法区的实现不一样,所以有些数据展示也会不同.
HSDB的使用
HSDB全称是HotSpotDebugger, HotSpot虚拟机的调试工具,在使用的时候,需要程序处在暂停的状态,可以直接使用Idea的debug工具. 使用HSDB可以看到堆栈里面相关的内容,
启动HSDB
无论哪种方式启动,都需要先知道当前java程序的进程号,我们使用jps命令,如下图所示:
然后我们使用命令 jhsdb hsdb --pid=87854
来启动HSDB,如下图所示:
使用HSDB查看JVM虚拟机栈信息
我们知道,在创建一个线程时,都会有一个为之分配一个jvm栈,如上图我们可以看到在java Threads中有5个线程,我们选中main线程,然后点击上面的查看栈信息的图标,如下图所示: