Class类文件结构
class类文件由无符号数和表组成,u1,u2,u4,u8分别表示占1,2,4,8个字节
类型 | 名称 | 数量 |
---|---|---|
u4 | magic (标识文件类型) | 1 |
u2 | minor_version | 1 |
u2 | major_version(jvm会拒绝超过其版本的class运行) | 1 |
u2 | constant_pool_count | 1 |
cp_info | constant_pool | constant_pool_count - 1 |
u2 | accessflags(这是个类or接口,是否public,abstract等信息) | 1 |
u2 | this_class(是一个索引(偏移量),指向CONSTANT_Class_info的类描述常量,在常量表中可见) | 1 |
u2 | super_class | 1 |
u2 | interfaces_count | 1 |
u2 | interfaces | interfaces_count |
u2 | fields_count | 1 |
field_info | fields | fields_count |
u2 | method_count | 1 |
method_info | methods | methods_count |
u2 | attributes_counts | 1 |
attribute_info | attributes | attributes_count |
常量池(constant_pool_count)
常量池计数从1开始。存放字面量和符号引用,符号引用包括:
- 类和接口的全限定名
- 字段的名称和描述符
- 方法的名称和描述符
常量表中每个常量一般存放tag,bytes,length属性,不同类型常量的结构并不相同。
本文采用创作共用保留署名-非商业-禁止演绎4.0国际许可证,欢迎转载,但转载请注明来自http://thousandhu.github.io,并保持转载后文章内容的完整。本人保留所有版权相关权利。
本文链接:http://thousandhu.github.io/2016/06/18/深入理解java虚拟机-类文件结构/