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

%%
▶1.🏡⭐️◼️【🌈费曼无敌🌈⭐️第一步⭐️】◼️⭐️-point-20230512-0742%%
❕ ^nbanwp

1
$ sudo java -cp ,:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/sa-jdi.jar sun.jvm.hotspot.HSDB
1
$ sudo java -cp ,:/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/lib/sa-jdi.jar sun.jvm.hotspot.HSDB
1
2
3
cd /Library/Java/JavaVirtualMachines/jdk-11.0.13.jdk/Contents/Home/bin/

jhsdb hsdb

3. 实战经验

4. 参考与感谢

[[../../../../cubox/006-ChromeCapture/解读HSDB - 简书]]
[[../../../../cubox/006-ChromeCapture/HSDB(Hotspot Debugger)从入门到实战 Java程序员进阶之路]]
[[../../../../cubox/006-ChromeCapture/JVM系列之:关于HSDB的一点心得 HeapDump性能社区]]