Java的编译

1.编写代码

生成 【.java】 文件

public class VolatileCode {

    private static volatile int i;

    public static void incr() {
        i++;
    }

    public static void main(String[] args) {
        incr();
    }
}

2.编译代码

生成 【.class】 文件

javac VolatileCode.java得到VolatileCode.class文件

3.生成汇编文件(机器码)

 java -server -Xcomp -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:CompileCommand=compileonly,*VolatileCode.incr 【包名.】VolatileCode > 汇编.txt

 

-XX:CompileCommand=command,method【该参数用于定制编译需求,比如打印某个方法汇编代码或过滤某个方法不做JIT编译】,command选项有如下:
exclude,跳过编译指定的方法
compileonly,只编译指定的方法
inline/dontinline,设置是否内联指定方法
print,打印生成的汇编代码
break,JVM以debug模式运行时,在方法编译开始处设置断点
quiet,不打印在此命令之后、通过-XX:CompileCommand指定的编译选项

4. 生成字节码文件

  javap -v -c -s -l VolatileCode.class >字节码.txt

 

posted @ 2022-03-20 19:05  hutuc  阅读(118)  评论(0编辑  收藏  举报