博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 查看字节码_java javap查看class字节码
阅读量:4964 次
发布时间:2019-06-12

本文共 1667 字,大约阅读时间需要 5 分钟。

java为我们提供了javap命令来查看class字节码,下面以实例来进行说明。首先写一段单例懒加载的代码:

class Singleton{

private volatile static Singleton instance = null;

private Singleton() {}

public static Singleton getInstance() {

if(instance==null) {

synchronized (Singleton.class) {

if(instance==null)

instance = new Singleton();

}

}

return instance;

}

}

对上面代码进行编译,操作,这里采用idea的maven环境进行编译,编译之后,class文件位于target目录下。

36dad429f27e4d5343900bc90f560052.png

然后通过idea提供的Terminal工具,进入该目录:

ershixiongdeMacBook-Pro:java-stream zzs$ cd target/classes/com/secbro2/singleton/

ershixiongdeMacBook-Pro:singleton zzs$ ls

Singleton.class

ershixiongdeMacBook-Pro:singleton zzs$

然后执行以下命令,并获得字节码内容:

javap -c Singleton.class

Compiled from "Singleton.java"

public class com.secbro2.singleton.Singleton {

public static com.secbro2.singleton.Singleton getInstance();

Code:

0: getstatic #2 // Field instance:Lcom/secbro2/singleton/Singleton;

3: ifnonnull 37

6: ldc #3 // class com/secbro2/singleton/Singleton

8: dup

9: astore_0

10: monitorenter

11: getstatic #2 // Field instance:Lcom/secbro2/singleton/Singleton;

14: ifnonnull 27

17: new #3 // class com/secbro2/singleton/Singleton

20: dup

21: invokespecial #4 // Method "":()V

24: putstatic #2 // Field instance:Lcom/secbro2/singleton/Singleton;

27: aload_0

28: monitorexit

29: goto 37

32: astore_1

33: aload_0

34: monitorexit

35: aload_1

36: athrow

37: getstatic #2 // Field instance:Lcom/secbro2/singleton/Singleton;

40: areturn

Exception table:

from to target type

11 29 32 any

32 35 32 any

static {};

Code:

0: aconst_null

1: putstatic #2 // Field instance:Lcom/secbro2/singleton/Singleton;

4: return

}

查看字节码对于java内部执行的逻辑可以有很好的理解,特别是对于线程并发相关方面的有非常大的帮助。

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

你可能感兴趣的文章
N进制到M进制的转换问题
查看>>
利用sed把一行的文本文件改成每句一行
查看>>
Android应用开发:核心技术解析与最佳实践pdf
查看>>
python——爬虫
查看>>
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
查看>>
求一个字符串中最长回文子串的长度(承接上一个题目)
查看>>
简单权限管理系统原理浅析
查看>>
springIOC第一个课堂案例的实现
查看>>
求输入成绩的平均分
查看>>
php PDO (转载)
查看>>
wordpress自动截取文章摘要代码
查看>>
[置顶] 一名优秀的程序设计师是如何管理知识的?
查看>>
scanf和gets
查看>>
highcharts 图表实例
查看>>
ubuntu下如何查看用户登录及系统授权相关信息
查看>>
秋季学期学习总结
查看>>
SpringBoot 优化内嵌的Tomcat
查看>>
【LaTeX】E喵的LaTeX新手入门教程(1)准备篇
查看>>
highcharts曲线图
查看>>
extjs动态改变样式
查看>>