关于JAVA反汇编,HSDIS,JITwatch,JAVA 17,JDK 17的问题

Java反汇编

一、环境准备

  1. Windows 10 ,64位
  2. IDEA 2021.3.3
  3. JDK 17
    java version “17.0.4.1” 2022-08-18 LTS
    Java™ SE Runtime Environment (build 17.0.4.1+1-LTS-2)
    Java HotSpot™ 64-Bit Server VM (build 17.0.4.1+1-LTS-2, mixed mode, sharing)

二、HSDIS

准备HSDIS插件
Windows 10 ,64位 对应插件: hsdis-amd64.dll
其他系统对应插件,请自行查找

准备好插件,将插件放入对应目录文件夹下

JDK 17 对应目录

C:\Program Files\Java\jdk-17.0.4.1\bin\server

具体的JDK安装目录,自己的安装目录为准,主要是要放在 jdk 17下的bin\server目录下
.\Java\jdk-17.0.4.1\bin\server
其他版本的 jdk 放置目录请自行查询

反汇编

  • 完成以上准备工作,即可进行 JAVA 反汇编。

  • 以下反汇编演示,都是在 IDEA 2021.3.3 环境下进行。不同的IDE,请以自己熟练使用的IDE为准。

准备测试代码
  • 以经典的 双重检查单例 代码为例,为后续的 volatile 关键字探索提前准备反汇编文件。
public class SingletonWithVolatile {
    private volatile static SingletonWithVolatile instance;

    public static SingletonWithVolatile getInstance() {
        if (instance == null) {
            synchronized (SingletonWithVolatile.class) {
                if (instance == null) {
                    instance = new SingletonWithVolatile();
                }
            }
        }
        return instance;
    }

    public static void main(String[] args) {
        SingletonWithVolatile.getInstance();
    }
}
设置 VM options

添加 VM options输入框

添加VM options

输入配置命令

  • -Xcomp
    -XX:+UnlockDiagnosticVMOptions
    -XX:+PrintAssembly
    -XX:+LogCompilation
    -XX:LogFile=jit.log

-Xcomp : 让JVM以编译模式执行代码,JVM在首次运行时,就会将所有字节码编译为本地代码
-XX:+UnlockDiagnosticVMOptions : 解锁诊断功能
-XX:+PrintAssembly : 输出反汇编后的汇编指令
-XX:+LogCompilation:输出反汇编日志
-XX:LogFile=jit.log:反汇编日志保存路径及名称

  • 完成以上操作,点击RUN按钮,就会开始反汇编。
  • 同时控制台会输出相应内容,对应路径下也会生成反汇编日志文件。
  • 该日志文件用于后续的 JITwatch 可视化软件。
  • 反汇编完成,控制台输出截图如下

反汇编完成截图

三、JITwatch

准备 软件:JITwatch
此处使用的版本:jitwatch-ui-1.4.7-shaded-win.jar

初体验

完成以上准备操作,运行
JITwatch 预置了一个文件,点击 沙盒sandbox,可自行探索体验
JITwatch初体验

执行本地文件

关闭初体验窗口,清空初体验文件
清空初体验

创建新的配置
创建新的配置

设置环境
设置环境

选择log文件
选择log文件

RUN
开始探索吧
探索体验

结束

至此,已经成功完成了反汇编,成功完成图形化界面的初体验。
利刃出鞘,方可探索JVM奥秘。
加油,少年!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值