标签:
用于识别Class文件,占用4个字节,值为0xCAFEBABE。
该class文件的小版本号,占用2个字节。
该class文件的大版本号,占用2个字节。大版本号与小版本号结合,形成了该class文件的版本号。JVM在加载class文件时,会对其版本号进行校验。
值等于常量池中常量个数加1。
存储具体的常量信息,每个常量的前1个字节为常量类型标识,用于指明常量的类型,以便JVM针对不同的类型进行解析。
存储类的访问权限和属性信息,占用2个字节。
表格中未提到的位预留,应当被设置为0且在运行时被JVM忽略。
指向常量池中的一个类型为CONSTANT_Class_info结构的常量,占用2个字节。
8.super_class:父类名称
指向常量池中的一个类型为CONSTANT_Class_info结构的常量,占用2个字节。如果值为0,则表示该类的父类为java.lang.Object。接口的super_class值必须为0。
直接父接口个数,占用2个字节。
以源文件中定义的顺序指明父接口,每个值都指向常量池中的一个类型为CONSTANT_Class_info类型的常量,每个占用2个字节。
类字段或实例字段的数量,占用2个字节。
字段的描述信息,无固定长度,类型为field_info,不包括继承来的字段信息。
类方法或实例方法的数量,占用2个字节。
方法的描述信息,无固定长度,类型为method_info,不包括继承来的方法信息。
属性个数,占用2个字节。
属性信息,无固定长度,类型为attribute_info。
参考资料:
1.《深入理解Java虚拟机-JVM高级特性与最佳实践》
2.《The Java Virtual Machine Specification-Java SE 8 Edition》
标签:
原文地址:http://www.cnblogs.com/qhdxqxx/p/4907754.html