深入理解jvm --第六章 类文件结构

Class文件格式

Class文件格式.................................................................................................................... 1

1.      无符号数...................................................................................................................... 5

magic............................................................................................................................... 5

minor_version................................................................................................................. 5

major_version................................................................................................................. 5

access_flags..................................................................................................................... 6

ACC_PUBLIC................................................................................................................. 6

ACC_FINAL................................................................................................................... 6

ACC_SUPER.................................................................................................................. 6

ACC_INTERFACE.......................................................................................................... 6

ACC_ABSTRACT........................................................................................................... 6

ACC_SYNTHETIC.......................................................................................................... 7

ACC_ANNOTATION...................................................................................................... 7

ACC_ENUM.................................................................................................................. 7

this_class......................................................................................................................... 7

super_class...................................................................................................................... 7

interfaces......................................................................................................................... 7

interfaces_count............................................................................................................. 7

fields_count..................................................................................................................... 7

methods_count............................................................................................................... 8

attributes_count.............................................................................................................. 8

2.       表................................................................................................................................. 8

constant_pool................................................................................................................. 8

无符号数..................................................................................................................... 8

constant_pool_count.............................................................................................. 9

表................................................................................................................................. 9

CONSTANT_Utf8_info............................................................................................. 9

无符号数........................................................................................................... 10

tag.................................................................................................................. 10

length............................................................................................................. 10

bytes.............................................................................................................. 10

CONSTANT_Integer_info....................................................................................... 10

无符号数........................................................................................................... 11

tag.................................................................................................................. 11

bytes.............................................................................................................. 11

CONSTANT_Float_info.......................................................................................... 11

无符号数........................................................................................................... 11

tag.................................................................................................................. 12

bytes.............................................................................................................. 12

CONSTANT_Long_info........................................................................................... 12

无符号数........................................................................................................... 12

tag.................................................................................................................. 13

bytes.............................................................................................................. 13

CONSTANT_Double_info....................................................................................... 13

无符号数........................................................................................................... 13

tag.................................................................................................................. 14

bytes.............................................................................................................. 14

CONSTANT_Class_info.......................................................................................... 14

无符号数........................................................................................................... 14

tag.................................................................................................................. 15

name_index................................................................................................... 15

CONSTANT_String_info......................................................................................... 15

无符号数........................................................................................................... 15

tag.................................................................................................................. 16

index.............................................................................................................. 16

CONSTANT_Fieldref_info...................................................................................... 16

无符号数........................................................................................................... 16

tag.................................................................................................................. 17

index.............................................................................................................. 17

index.............................................................................................................. 17

CONSTANT_Methodref_info................................................................................. 17

无符号数........................................................................................................... 17

tag.................................................................................................................. 18

index.............................................................................................................. 18

index.............................................................................................................. 18

CONSTANT_InterfaceMethodref_info.................................................................. 18

无符号数........................................................................................................... 18

tag.................................................................................................................. 19

index.............................................................................................................. 19

index.............................................................................................................. 19

CONSTANT_NameAndType_info.......................................................................... 19

无符号数........................................................................................................... 19

tag.................................................................................................................. 20

index.............................................................................................................. 20

index.............................................................................................................. 20

CONSTANT_MethodHandle_info.......................................................................... 20

无符号数........................................................................................................... 20

tag.................................................................................................................. 21

reference_kind.............................................................................................. 21

reference_index............................................................................................ 21

CONSTANT_MethodType_info.............................................................................. 21

无符号数........................................................................................................... 21

tag.................................................................................................................. 22

descriptor_index........................................................................................... 22

CONSTANT_InvokeDynamic_info.......................................................................... 22

无符号数........................................................................................................... 22

tag.................................................................................................................. 23

bootstrap_method_attr_index..................................................................... 23

name_and_type_index................................................................................. 23

fields.............................................................................................................................. 23

无符号数................................................................................................................... 23

access_flags........................................................................................................... 24

ACC_PUBLIC....................................................................................................... 24

ACC_PRIVATE..................................................................................................... 24

ACC_PROTECTED............................................................................................... 24

ACC_STATIC....................................................................................................... 24

ACC_FINAL......................................................................................................... 24

ACC_VOLATILE................................................................................................... 24

ACC_TRANSIENT................................................................................................ 24

ACC_SYNTHETIC................................................................................................ 24

ACC_ENUM........................................................................................................ 24

name_index........................................................................................................... 24

descriptor_index................................................................................................... 24

attributes_count.................................................................................................... 24

表............................................................................................................................... 25

attributes............................................................................................................... 25

methods........................................................................................................................ 25

无符号数................................................................................................................... 25

access_flags........................................................................................................... 25

ACC_PUBLIC....................................................................................................... 26

ACC_PRIVATE..................................................................................................... 26

ACC_PROTECTED............................................................................................... 26

ACC_STATIC....................................................................................................... 26

ACC_FINAL......................................................................................................... 26

ACC_SYNCHRONIZED......................................................................................... 26

ACC_BRIDGE...................................................................................................... 26

ACC_VARARGS................................................................................................... 26

ACC_NATIVE...................................................................................................... 26

ACC_ABSTRACT................................................................................................. 26

ACC_STRICTFP................................................................................................... 26

ACC_SYNTHETIC................................................................................................ 27

name_index........................................................................................................... 27

descriptor_index................................................................................................... 27

attributes_count.................................................................................................... 27

表............................................................................................................................... 27

attributes............................................................................................................... 27

attributes....................................................................................................................... 27

无符号数................................................................................................................... 27

attribute_name_index.......................................................................................... 28

attribute_length.................................................................................................... 28

表............................................................................................................................... 28

info......................................................................................................................... 28

Code................................................................................................................... 29

ConstantValue................................................................................................... 29

Deprecated........................................................................................................ 29

Exceptions......................................................................................................... 29

EnclosingMethod............................................................................................... 29

InnerClasses....................................................................................................... 29

LineNumberTable.............................................................................................. 29

LocalVariableTable............................................................................................ 29

StackMapTable.................................................................................................. 29

Signature........................................................................................................... 30

SourceFile.......................................................................................................... 30

SourceDebugExtension..................................................................................... 30

Synthetic............................................................................................................ 30

LocalVariableTypeTable.................................................................................... 30

RuntimeVisibleAnnotations.............................................................................. 30

RuntimeInvisibleAnnotations............................................................................ 30

RuntimeVisibleParameterAnnotations............................................................. 30

RuntimeInvisibleParameterAnnotations........................................................... 30

AnnotationDefault............................................................................................. 30

BootstrapMethods............................................................................................ 30

 

 

  1. 无符号数

magic

 

u4类型,1个,值固定为0xCAFEBABE

minor_version

 

u2类型,1个

major_version

 

u2类型,1个

access_flags

 

u2类型,1个,各标识按位或得到

ACC_PUBLIC

 

0x0001

ACC_FINAL

 

0x0010

ACC_SUPER

 

0x0020

是否允许使用invokespecial字节码指令的新语义,invokespevial指令的语义在jdk1.0.2发生过改变,为了区别这条指令使用哪种语义,jdk1.0.2之后编译出来的类的这个标志都必须为真

ACC_INTERFACE

 

0x0200

ACC_ABSTRACT

 

0x0400

ACC_SYNTHETIC

 

0x1000 标识这个类并非由用户代码产生的

ACC_ANNOTATION

 

0x2000

ACC_ENUM

 

0x4000

this_class

 

u2类型,1个

super_class

 

u2类型,1个

interfaces

 

u2类型,interfaces_count个

interfaces_count

 

u2类型,1个

fields_count

 

u2类型,1个

methods_count

 

u2类型,1个

attributes_count

 

u2类型,1个

constant_pool

 

cp_info类型,constant_pool_conut个

无符号数

constant_pool_count

 

u2类型,1个,从1开始

CONSTANT_Utf8_info

 

标志1,描述UTF-8编码的字符串

无符号数

tag

 

u1类型,数量1个

length

 

u2类型,数量1个,描述UTF-8编码的字符串占用的字节数

bytes

 

u1类型,数量length个,长度为length的UTF-8编码的字符串

CONSTANT_Integer_info

 

标志3,描述整型字面量

无符号数

tag

 

u1类型,数量1个

bytes

 

u4类型,数量l1个,按高位在前存储的int值

CONSTANT_Float_info

 

标志4,描述浮点型字面量

无符号数

tag

 

u1类型,数量1个

bytes

 

u4类型,数量1个,按高位在前存储的float值

CONSTANT_Long_info

 

标志5,描述长整型字面量

无符号数

tag

 

u1类型,数量1个

bytes

 

u8类型,数量1个,按高位在前存储的long值

CONSTANT_Double_info

 

标志6,描述双精度浮点型字面量

无符号数

tag

 

u1类型,数量1个

bytes

 

u8类型,数量1个,按高位在前存储的double值

CONSTANT_Class_info

 

标志7,描述类或接口的符号引用

无符号数

tag

 

u1类型,数量1个

name_index

 

u2类型,数量1个,指向全限定名常量项的索引

CONSTANT_String_info

 

标志8,描述字符串类型字面量

无符号数

tag

 

u1类型,数量1个

index

 

u2类型,数量1个,指向字符串字面量的索引

CONSTANT_Fieldref_info

 

标志9,描述字段的符号引用

无符号数

tag

 

u1类型,数量1个

index

 

u2类型,数量1个,指向声明字段的类或者接口描述符CONSTANT_Class_info的索引项

index

 

u2类型,数量1个,指向字段描述符CONSTANT_NameAndType的索引项

CONSTANT_Methodref_info

 

标志10,描述类中方法的符号引用

无符号数

tag

 

u1类型,数量1个

index

 

u2类型,数量1个,指向声明方法的类描述符         CONSTANT_Class_info的索引项

index

 

u2类型,数量1个,指向名称及类型描述符CONSTANT_NameAndType的索引项

CONSTANT_InterfaceMethodref_info

 

标志11,描述接口中方法的符号引用

无符号数

tag

 

u1类型,数量1个

index

 

u2类型,数量1个,指向声明方法的类描述符         CONSTANT_Class_info的索引项

index

 

u2类型,数量1个,指向名称及类型描述符CONSTANT_NameAndType的索引项

CONSTANT_NameAndType_info

 

标志12,描述字段或方法的部分符号引用

无符号数

tag

 

u1类型,数量1个

index

 

u2类型,数量1个,指向该字段或方法名称常量项的索引

index

 

u2类型,数量1个,指向该字段或方法描述符常量项的索引

CONSTANT_MethodHandle_info

 

标志15,表示方法句柄

无符号数

tag

 

u1类型,数量1个

reference_kind

 

u1类型,数量1个,值必须在[1,9]之间,它决定了方法句柄的类型。方法句柄类型的值表示方法句柄的字节码行为

reference_index

 

u2类型,数量1个,值是对常量池的有效索引

CONSTANT_MethodType_info

 

标志16,标识方法类型

无符号数

tag

 

u1类型,数量1个

descriptor_index

 

u2类型,数量1个,值必须是对常量池的有效索引,常量池在该索引处的项必须是CONSTANT_Utf8_info结构,表示方法的描述符

CONSTANT_InvokeDynamic_info

 

标志18,表示一个动态方法调用点

无符号数

tag

 

u1类型,数量1个

bootstrap_method_attr_index

 

u2类型,数量1个,必须是对当前Class文件中引导方法表的bootstrap_methods[]数组的有效索引

name_and_type_index

 

u2类型,数量1个,值必须是对当前常量池的有效索引,常量池在该索引处的项必须是CONSTANT_NameAndType_info结构,表示方法名和方法描述符

fields

 

fields_info类型,fields_count个

无符号数

access_flags

ACC_PUBLIC

ACC_PRIVATE

ACC_PROTECTED

ACC_STATIC

ACC_FINAL

ACC_VOLATILE

ACC_TRANSIENT

ACC_SYNTHETIC

ACC_ENUM

name_index

descriptor_index

attributes_count

attributes

methods

 

method_info类型,method_info个

无符号数

access_flags

ACC_PUBLIC

ACC_PRIVATE

ACC_PROTECTED

ACC_STATIC

ACC_FINAL

ACC_SYNCHRONIZED

ACC_BRIDGE

ACC_VARARGS

ACC_NATIVE

ACC_ABSTRACT

ACC_STRICTFP

ACC_SYNTHETIC

name_index

descriptor_index

attributes_count

attributes

attributes

 

attribute_info类型,attributes_count个

无符号数

attribute_name_index

attribute_length

info

Code

ConstantValue

Deprecated

Exceptions

EnclosingMethod

InnerClasses

LineNumberTable

LocalVariableTable

StackMapTable

Signature

SourceFile

SourceDebugExtension

Synthetic

LocalVariableTypeTable

RuntimeVisibleAnnotations

RuntimeInvisibleAnnotations

RuntimeVisibleParameterAnnotations

RuntimeInvisibleParameterAnnotations

AnnotationDefault

BootstrapMethods

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值