您的位置:首页 > 编程语言 > Java开发

javap指令

2016-05-15 21:51 369 查看
javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码。通过它,我们可以对照源代码和字节码,从而了解很多编译器内部的工作。
用法: javap <options> <classes>
其中, 可能的选项包括:
-help  --help  -?        输出 javap 的帮助信息
-version                 版本信息
-v  -verbose             输出堆栈大小、各方法的 locals 及 args 数,以及class文件的编译版本
-l                       输出行号和局部变量表
-public                  仅显示公共类和成员
-protected               显示受保护的/公共类和成员
-package                 显示程序包/受保护的/公共类和成员 (默认设置)
-p  -private             显示所有类和成员
-c                       对字节码进行反汇编,输出类中各方法的未解析的代码,即构成 Java 字节码的指令。
-s                       输出内部类型签名
-sysinfo                 显示正在处理的类的系统信息 (路径, 大小, 日期, MD5 散列)
-constants               显示最终常量
-classpath <path>        指定查找用户类文件的位置
-cp <path>               指定查找用户类文件的位置
-bootclasspath <path>    覆盖引导类文件的位置

如:已经有个Test.class文件,则javap -c test


uniwinmatoMacBook:desktop uniwin$ javac Test.java

uniwinmatoMacBook:desktop uniwin$ javap -c Test

Compiled from "Test.java"

public class Test {

  public Test();

    Code:

       0: aload_0

       1: invokespecial #1                  // Method java/lang/Object."<init>":()V

       4: return

  public static void main(java.lang.String[]);

    Code:

       0: new           #2                  // class SubCaller

       3: dup

       4: invokespecial #3                  // Method SubCaller."<init>":()V

       7: astore_1

       8: aload_1

       9: invokeinterface #4,  1            // InterfaceMethod Caller.call:()V

      14: return

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息