使用HSDB查看JVM中Class的运行时状态

1 前述

  为了深入理解JVM原理,有必要知道Class类在JVM内部的表示形式,HSDB工具可以查看JVM中Class的运行时状态,下面记录一下使用过程。

2 HSDB

  HSDB (HotSpot Debbuger)是一款内置于SA(Serviceability Agent)中的GUI调试工具(《HotSpot实战》)。它位于%JAVA_HOME%/lib/sa-jdi.jar包中。SA是hotspot的调试工具集,它是很多常用jdk工具的基础,例如jps、jstack等。
在这里插入图片描述

3 HSDB使用

1.使用JPS查看Java进程号

在这里插入图片描述

2.java -classpath "%JAVA_HOME%/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB
  如果出现下述错误,到jdk1.8.0_121\jre\bin目录下去复制一份放到报错提示的位置:
  C:\Users\lenovo>java -classpath "%JAVA_HOME%/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB
Exception in thread "Thread-1" java.lang.UnsatisfiedLinkError: Can't load library: C:\Program Files\Java\jre1.8.0_121\bin\sawindbg.dll
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.load0(Unknown Source)
        at java.lang.System.load(Unknown Source)
        at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.<clinit>(WindbgDebuggerLocal.java:661)
        at sun.jvm.hotspot.HotSpotAgent.setupDebuggerWin32(HotSpotAgent.java:567)
        at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:335)
        at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
        at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
        at sun.jvm.hotspot.HSDB.attach(HSDB.java:1184)
        at sun.jvm.hotspot.HSDB.access$1700(HSDB.java:53)
        at sun.jvm.hotspot.HSDB$25$1.run(HSDB.java:456)
        at sun.jvm.hotspot.utilities.WorkerThread$MainLoop.run(WorkerThread.java:66)
        at java.lang.Thread.run(Unknown Source)

在这里插入图片描述

3. 点击Attach to,输入PID即可呈现下面的画面。窗口展示的是当前JVM的所有线程。

在这里插入图片描述

4. 双击查看任意线程

4 更多功能的简单使用

4.1 图形界面功能

展开Tools菜单,可以看到非常多的工具。
在这里插入图片描述

4.1.1

工具的简单介绍(摘自《HotSpot实战》85页):
在这里插入图片描述

4.2 命令行界面功能

打开命令行窗口,输入help提示可用的命令:
在这里插入图片描述
在这里插入图片描述
图形界面的功能是命令行界面功能的子集,这些功能实际由CLHSDB提供,我们可以直接在命令行使用这些功能:java -classpath “%JAVA_HOME%/lib/sa-jdi.jar” sun.jvm.hotspot.CLHSDB
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值