虚拟机 第六章 类文件结构

本文介绍了Java实现语言无关性的基础——虚拟机和字节码存储格式,并详细解析了class类文件的结构,包括其组织方式、数据类型及各部分的作用。

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

6.2 无关性的基石
实现语言无关性的基础是虚拟机和字节码存储格式。各种语言都可以通过对应编译器转成class文件在虚拟机运行。
6.3class类文件的结构
class类文件对应唯一一个类或接口的定义信息,类或接口并不定都定义在文件里(也可以通过类加载器直接生成类或接口)
class文件是以8字节为基础单位的二进制流 ,各个数据项目严格按照顺序紧凑排列在class文件中。当数据项超过8位字节,则以‘big-endian’方式存储。
大端模式Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
小端模式Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
内存地址 Little-Endian Big-Endian
0x4000 0x78 0x12
0x4001 0x56 0x34
0x4002 0x34 0x56
0x4003 0x12 0x78

class文件只有两种数据类型:无符号数
无符号数以u1,u2,u4,u8分别表示1个字节,2个字节,4个字节,8个字节的无符号数,它可以用来描述数字、索引引用、数量值或者按照UTF-8编码构成字符串值。
表是由多个无符号数或者多个表组成的。习惯性以_info 结尾,整个class文件本质就是一张表,由一下数据项构成。

  • class文件格式
类型名称数量
u4magic1
u2minor_version1
u2major_version1
u2constant_pool_count1
cp_infoconstant_poolconstant_pool_count-1
u2access_flags1
u2this_class1
u2super_class1
u2interface_count1
u2interfacesinterface_count
u2fields_count1
field_infofieldsfields_count
u2methods_count1
method_infomethodsmethods_count
u2attributes_count1
attribute_infoattributesattributes_count
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值