📚《深入浅出JVM字节码》
《Java虚拟机字节码:从入门到实战》的开源版本。作者通过自己的实战经验,整合出一套适合新手的高效学习教程。归纳并提炼知识点,制定合理路线,帮助读者更快掌握核心技术。
根据《Java虚拟机规范》的规定,class文件结构如下表所示。
class文件结构
类型 | 说明 |
---|---|
u4 | Magic(魔数) |
u2 | Minor Version(副版本号) |
u2 | Major Version(主版本号) |
u2 | Constant Pool Count(常量池计数) |
cp_info | Constant Pool[常量池计数-1] (常量池数组) |
u2 | Access Flags(访问标志,如public) |
u2 | This Class(类索引,在常量池表中的索引) |
u2 | Super Class(父类索引,在常量池表中的索引) |
u2 | Interfaces Count(接口总数) |
u2 | Interfaces[接口总数] |
u2 | Fields Count (字段总数) |
field_info | Fields[字段总数] (字段表) |
u2 | Methods Count(方法总数) |
method_info | Methods[方法总数-1] (方法表) |
u2 | Attributes Count(属性总数) |
attribute_info | Attributes[属性总数](属性表) |
其中类型u2、u4是《Java虚拟机规范》中定义的类型,分别表示两个字节、四个字节,而cp_info、field_info、method_info、attribute_info都是结构体,与class文件结构一样,它们也有固定的格式,这些结构体我们后面在实现class文件结构解析器过程中再详细介绍。
从表“class文件结构”可以看出,一个完整的class文件按照顺序存储了魔数、版本号、常量池计数、常量池数组、该类的访问标志、this符号索引、继承的父类的符号索引、实现的接口总数与接口表、字段总数与字段表、方法总数与方法表、属性总数与属性表。
发布于:2021 年 07 月 10 日
作者: 吴就业
链接: https://github.com/wujiuye/JVMByteCodeGitBook
来源: Github Pages 开源电子书《深入浅出JVM字节码》(《Java虚拟机字节码从入门到实战》的第二版),未经作者许可,禁止转载!
📚目录
订阅
订阅新文章发布通知吧,不错过精彩内容!
输入邮箱,提交后我们会给您发送一封邮件,您需点击邮件中的链接完成订阅设置。