本文目前只介绍到windows,如果以后有需要会放上其他操作系统的库文件。
Windows
- 戳这里下载hsdis.dll ,提取码:
85of
- 将
hsdis.dll
放入jdk/bin/server
目录下,如图所示:
- 在执行java程序时加上以下参数:
-server
,表示运行在服务器模式下-Xcomp
,表示永远以编译模式运行-XX:-Inline
,表示禁止内联优化-XX:+UnlockDiagnosticVMOptions
,表示解锁诊断参数-XX:CompileCommand=<ARG>,*<CLASS_NAME>.<METHOD_NAME>
,仅针对指定的某一段输出汇编<ARG>
,有print
、option
<CLASS_NAME>
,即要分析的类名<METHOD_NAME>
,该类中的某个方法
-XX:+PrintAssembly <CLASS_NAME>
,输出该程序的全部汇编<CLASS_NAME>
,要分析的类名
比如我现在有这样一段程序:
public class VolatileApp {
static volatile boolean flag = false;
public static void main(String[] args) {
test();
}
public static void test(){
flag = false;
}
}
我要输出 test()
方法的汇编的话,需要这样子写:
java -server -Xcomp -XX:+UnlockDiagnosticVMOptions -XX:-Inline -XX:CompileCommand=print,*VolatileApp.test
最后输出如下所示的文本内容: