java字节码《java虚拟机》要点精炼


本文图片以及部分内容来自 Java字节码增强探秘
Java字节码的介绍

字节码基础

.java文件通过javac编译后将得到一个.class文件,如下图所示,class文件中都是16进制数。
在这里插入图片描述
java字节码主要包括以下几部分。
在这里插入图片描述
(1)魔数,魔数固定的值是CAFEBABY,占用四个字节,用此来判断该文件是否可以被虚拟机所接收。我理解在类加载过程中,校验的第一步格式校验就是去校验魔数。

补充:为什么CA占一个字节呢,因为一个字节是8位01,而这个是16进制的,最大可以到15,15就是F,也就是1111,所以一个16进制数需要4位01来存储,因此两个16进制数就是一字节。

(2)版本数:紧接着魔数的后4位数就是版本数,虚拟机要求不能执行超过其版本号的class文件。

(3)常量池:常量池中存储的是字面量与符号引用。由于存储的数量不定,因此需要两字节来存储数量。常量池中存储与常规不同,它的存储是以1开始的,因此比如值为0x0016,对应22。常量池中有21个常量,其下标为1-21。
在这里插入图片描述
(4)访问标志:之后的两个字节表示访问标志,包括: 这个Class是类还

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值