3种骚操作,教你查看 Java 字节码!

  • 2019 年 12 月 21 日
  • 笔记

在我们工作、学习、以及研究 JVM 过程当中,不可避免的要查看 Java 字节码,通过查看字节码可以了解一个类的编译结果,也能通过编译器层面来分析一个类的性能。

字节码文件是不能直接打开的,下面栈长教大家几种简单的方法如何查看 Java 字节码。

1、使用 javap 命令查看字节码

命令格式如下:

javap -c xxx.class

JDK 提供的了,不解释,来,演示操作一把:

$ javap -c Test.class  Compiled from "Test.java"  public class com.test.Test {    public com.test.Test();      Code:         0: aload_0         1: invokespecial #8                  // Method java/lang/Object."<init>":()V         4: return      public static void main(java.lang.String[]);      Code:         0: return  }

如上所示,可以看到 Test 类的的字节码。

2、Intellij IDEA 中查看字节码

Intellij IDEA 直接集成了一个工具菜单,可以直接查看字节码,打开 ByteCode 插件窗口方法如下:

View -> Show bytecode

如图所示,可以看到 String 类的的字节码。

是不是很方便?

如果看不到这个菜单,那可能你当前的类没有编译,需要你编译一下。

不会用 Intellij IDEA 的可以关注公众号:Java技术栈,在后台回复:IDEA,可以获取栈长整理的历史教程,都是无废话干货。

想当初从 Eclipse 转 IDEA 数次都失败,现在早习惯了,说实话写代码是真智能,基友搭配,效率翻倍。

3、Eclipse 中查看字节码

在 Eclipse 中查看字节码稍显麻烦,需要安装插件,并打开插件窗口,安装和使用方式如下:

Name: bytecode

Location: http://andrei.gmxhome.de/eclipse

安装完后需要重启 Eclipse 才能生效。

Eclipse 打开 ByteCode 插件窗口:

Window-> Show View -> Other -> Java -> Bytecode

如图所示,可以看到 String 类的的字节码。

推荐阅读:

1、硬核!尽量避免 bug 手法

2、HashMap 为什么线程不安全?

3、Spring 如何在一个事务中开启另一个事务?

4、疯了!同事又问我为什么不能用 isXXX

5、歪国人整理的 2019 年 Java 开发路线图!