深入理解java虚拟机-类文件结构

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虚拟机-类文件结构/