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

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

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

[[286230]]

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

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

命令格式如下:

  1. javap -c xxx.class 

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

 

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

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

2、Intellij IDEA 中查看字节码

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

 

  1. View -> Show bytecode 

 

 

 

 

 

 

 

 

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

是不是很方便?

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

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

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

3、Eclipse 中查看字节码

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

 

 

 

 

Name: bytecode

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

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

Eclipse 打开 ByteCode 插件窗口:

 

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

 

 

 

 

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

当然,市面上还有很多其他的小工具可以查看字节码,这里就不再一一介绍了,有兴趣的可以去了解下,栈长介绍的这三种方式应该够用了吧。

看完有没有涨姿势呢?

责任编辑:华轩 来源: Java技术栈
相关推荐

2010-09-25 10:20:05

JAVA字节码

2020-04-09 09:52:42

Python数据技术

2011-12-01 14:56:30

Java字节码

2023-03-27 16:44:23

2021-12-09 22:36:30

Java 字节码页缓存

2023-07-03 08:11:48

java字节码字段

2019-10-30 08:45:21

JS代码NodeJS

2022-03-30 10:10:17

字节码栈空间

2012-01-12 09:20:49

Java

2023-08-30 11:03:47

Java工具

2013-08-12 11:18:00

2020-10-14 11:05:10

Java开发IDEA

2018-04-04 15:05:17

虚拟机字节码引擎

2010-01-03 10:47:22

2010-04-14 13:01:56

2012-03-28 10:30:33

ScalaJava

2023-01-01 14:04:51

字节码接口系统

2020-10-28 14:03:22

NLP自然语言分词

2021-05-28 23:04:23

Python利器执行

2010-09-25 10:32:52

Java字节码
点赞
收藏

51CTO技术栈公众号