JVM(4)类文件结构

本文详细介绍了JVM中的类文件结构,包括魔数、版本号、常量池、访问标记、类索引、父类索引、接口索引、字段表、方法表和属性表等关键组成部分,揭示了class文件如何紧凑存储并提供运行时信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在class文件中,中间没有分隔符。
class文件格式:

类型名称数量描述
u4magic1魔数
u2minor_version1次版本号
u2major_version1主版本号
u2constant_pool_count1常量池容量(计数从1开始)
cp_infoconstant_poolconstant_pool_count-1常量
u2access_flags1访问标志
u2this_class1类索引
u2super_class1父类索引
u2interfaces_count1接口索引集合长度
u2interfacesinterfaces_count接口索引集合
u2fields_count1字段表长度
field_infofieldsfields_count字段表集合
u2methods_count1方法表长度
method_infomethodsmethods_count方法表集合
u2attributes_count1属性表长度
attribute_infoattributesattributes_count属性表集合

1、魔数:0xCAFEBABE
2、版本号:版本号向下兼容,低版本JDK不能运行高版本的class文件。
3、常量池:常量池中主要存放两类常量:字面量和符号引用。
字面量包括文本字符串,声明为final的常量值等。
符号引用包括:类和接口的全限定名,字段的名称和描述符,方法的名称和描述符。
4、访问标记:用于识别一些类或者接口层次的访问信息。
5、类索引、父类索引与接口索引:用于确定类、父类、接口的全限定名。
6、字段表:用于描述接口或者类中声明的变量。
7、方法表:用于描述方法。
8、属性表:用于描述专有属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值