JVM类文件结构
在Java中,JVM能理解的代码就叫做字节码(.class文件),它不面向任何特定的处理器,只面向虚拟机,这保证了Java程序的可移植性。
Class文件结构
Class文件通过ClassFile定义,有点像C语言的结构体。
ClassFile {
u4 magic; //Class 文件的标志,称为“魔数”
u2 minor_version;//Class 的小版本号(Java版本相关)
u2 major_version;//Class 的大版本号(Java版本相关)
u2 constant_pool_count;//常量池的数量
cp_info constant_pool[constant_pool_count-1];//常量池(字面量和符号引用)
u2 access_flags;//访问标记(public/private? final? abstract?)
u2 this_class;//当前类
u2 super_class;//父类
u2 interfaces_count;//实现接口数量
u2 interfaces[interfaces_count];//接口数组
u2 fields_count;//字段属性数量
field_info fields[fields_count];//字段数组
u2 methods_count;//方法数量
method_info methods[methods_count];//方法数组
u2 attributes_count;//此类的属性表中的属性数
attribute_info attributes[attributes_count];//属性表集合
}