用户工具


环境

maxos

下载依赖库

  • 放到库路径: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次才被编译否则都是解释执行。这里不加这个参数就无法反汇编