性能调优专题-基础-9、JVM-HSDB
1. 反编译 反汇编
https://juejin.im/post/5b72860e51882560eb6b5269
https://www.jianshu.com/p/6a8997560b05
1.1. 反编译
将 .class 文件逆向成 java源代码
1.2. 反汇编
或者叫字节码解析
1、javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息。
一般常用的是-v -l -c三个选项。
javap -v classxx,不仅会输出行号、本地变量表信息、反编译汇编代码,还会输出当前类用到的常量池等信息。
javap -l 会输出行号和本地变量表信息。
javap -c 会对当前class字节码进行反编译生成汇编代码
安装了Java开发环境的电脑上,可以通过命令⾏ 输⼊ :javap -c XXX.class ⽂件来查看该class⽂件的编
译过程。
javap的⽤法格式: javap 其中classes就是你要反编译的class⽂件。 在命令⾏中直接输⼊javap或
javap -help可以看到javap的options有如下选项:
⼀般常⽤的是-v -l -c三个选项。 javap -v classxx,不仅会输出⾏号、本地变量表信息、反编译汇编代
码,还会输出当前类⽤到的常量池等信息。 javap -l 会输出⾏号和本地变量表信息。 javap -c 会对当前
class字节码进⾏反编译⽣成汇编代码。 查看汇编代码时,需要知道⾥⾯的jvm指令,可以参考官⽅⽂
档: https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html
2、jclasslib工具
[[../../cubox/006-ChromeCapture/20221109-IDEA字节码学习查看神器jclasslib bytecode viewer介绍_明明如月学长的博客-CSDN博客_bytecode viewer]]
3、Hsdis 结合 JITWatch 查看机器汇编代码
https://juejin.im/post/5b72860e51882560eb6b5269
HSDIS 是由Project Kenai(kenai.com/projects/ba… VM JIT编译代码的反汇编插件,作⽤是让
HotSpot的 -XX:+PrintAssembly 指令调⽤它来把动态⽣成的本地代码还原为汇编代码输出,同时还⽣成了⼤量⾮常有价值的注释,这样我们就可以通过输出的代码来分析问题。
查看HSDIS是否工作
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -version
✅ [[../../../../../../cubox/006-ChromeCapture/20221109-Mac使用hsdis查看java字节码的汇编命令 - 掘金]]
/Users/taylor/Nutstore Files/Obsidian_data/pages/002-schdule/001-Arch/001-Subject/000-工具箱专题/字节码查看
[[../../../../../../cubox/006-ChromeCapture/20221109-idea配置查看代码汇编指令插件_感恩的韭菜的博客-CSDN博客]]
2. HSDB
❕ ^nbanwp
1 |
|
1 |
|
1 |
|
3. 实战经验
4. 参考与感谢
[[../../../../cubox/006-ChromeCapture/解读HSDB - 简书]]
[[../../../../cubox/006-ChromeCapture/HSDB(Hotspot Debugger)从入门到实战 Java程序员进阶之路]]
[[../../../../cubox/006-ChromeCapture/JVM系列之:关于HSDB的一点心得 HeapDump性能社区]]