JVM(4)类文件结构
2017-10-19 16:06
239 查看
class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在class文件中,中间没有分隔符。
class文件格式:
1、魔数:0xCAFEBABE
2、版本号:版本号向下兼容,低版本JDK不能运行高版本的class文件。
3、常量池:常量池中主要存放两类常量:字面量和符号引用。
字面量包括文本字符串,声明为final的常量值等。
符号引用包括:类和接口的全限定名,字段的名称和描述符,方法的名称和描述符。
4、访问标记:用于识别一些类或者接口层次的访问信息。
5、类索引、父类索引与接口索引:用于确定类、父类、接口的全限定名。
6、字段表:用于描述接口或者类中声明的变量。
7、方法表:用于描述方法。
8、属性表:用于描述专有属性。
class文件格式:
类型 | 名称 | 数量 | 描述 |
---|---|---|---|
u4 | magic | 1 | 魔数 |
u2 | minor_version | 1 | 次版本号 |
u2 | major_version | 1 | 主版本号 |
u2 | constant_pool_count | 1 | 常量池容量(计数从1开始) |
cp_info | constant_pool | constant_pool_count-1 | 常量 |
u2 | access_flags | 1 | 访问标志 |
u2 | this_class | 1 | 类索引 |
u2 | super_class | 1 | 父类索引 |
u2 | interfaces_count | 1 | 接口索引集合长度 |
u2 | interfaces | interfaces_count | 接口索引集合 |
u2 | fields_count | 1 | 字段表长度 |
field_info | fields | fields_count | 字段表集合 |
u2 | methods_count | 1 | 方法表长度 |
method_info | methods | methods_count | 方法表集合 |
u2 | attributes_count | 1 | 属性表长度 |
attribute_info | attributes | attributes_count | 属性表集合 |
2、版本号:版本号向下兼容,低版本JDK不能运行高版本的class文件。
3、常量池:常量池中主要存放两类常量:字面量和符号引用。
字面量包括文本字符串,声明为final的常量值等。
符号引用包括:类和接口的全限定名,字段的名称和描述符,方法的名称和描述符。
4、访问标记:用于识别一些类或者接口层次的访问信息。
5、类索引、父类索引与接口索引:用于确定类、父类、接口的全限定名。
6、字段表:用于描述接口或者类中声明的变量。
7、方法表:用于描述方法。
8、属性表:用于描述专有属性。
相关文章推荐
- 深入理解JVM(六)——类文件结构
- 深入理解JVM之五:类文件结构
- 深入学习Java JVM - 类文件结构
- JVM小结--类文件结构
- [置顶] 深入理解JVM之三:类文件结构
- 深入理解JVM之五:类文件结构
- jvm笔记04:类文件结构
- JVM 的类文件结构
- 深入理解JVM之五:类文件结构
- JVM初窥: 类文件结构
- 【JVM】类文件结构
- JVM--类文件结构
- JVM-类文件结构
- jvm(6)-java类文件结构(字节码文件)
- JVM--java类文件结构
- JVM执行子系统探究——类文件结构初窥
- jvm笔记4--类文件结构
- 《深入理解Java虚拟机——JVM高级特性与最佳实践》学习笔记——Java类文件结构
- JVM - 类文件结构
- 简述 JVM 基础(四):类结构文件