因为想分析Syschronized的源码,所以想查看具体的字节码文件的信息,所以接触到这个工具。
总体流程
1.先用javac得到具体的字节码对象
2.用javap得到具体的class文件的信息
javac命令具体解析
javac 是java中的编译源代码的命令工具,将.java文件编译成 .class 文件;
1. javac xxx.java
- 不建议使用,直接javac xx.java,就不会在生成对应的局部变量表等信息。
2. javac -g xxx.java
- 建议使用,使用javac -g xx.java就可以生成所有相关信息了。
javap命令具体解析
javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区 (字节码指令)、局部变量表、异常表和代码行偏移量映射表、常量池等信息。
- javap -l :会输出行号和本地变量表信息;
- javap -c :会对当前class字节码进行反编译生成汇编代码;
- javap -v: class字节码文件中除了包-c参数包含的内容外,还会输出行号、局部变量表信息、常量池等信息; //最全,暂时先使用这个