===== 环境 =====
maxos
===== 下载依赖库 =====
* 下载地址: https://github.com/a10y/hsdis-macos
* 放到库路径:sudo mv Downloads/hsdis-amd64.dylib /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/
===== java代码 =====
public class Asm {
volatile int a=2;
public void addOne(){
a++;
}
public static void main(String[] args) {
new Asm().addOne(); // 最少要调用一次
}
}
javac Asm.java
java -server -Xcomp -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:CompileCommand=compileonly,Asm.addOne Asm
参数-Xcomp:强制第一次执行函数就编译成机器码(进而才能被反汇编)。java默认一个函数要执行10000次才被编译否则都是解释执行。这里不加这个参数就无法反汇编