码迷,mamicode.com
首页 > 其他好文 > 详细

2.Class文件结构

时间:2015-10-24 23:14:25      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

1.magic:魔数

  用于识别Class文件,占用4个字节,值为0xCAFEBABE。

2.minor_version:小版本数

  该class文件的小版本号,占用2个字节。

3.major_version:大版本数

  该class文件的大版本号,占用2个字节。大版本号与小版本号结合,形成了该class文件的版本号。JVM在加载class文件时,会对其版本号进行校验。

4.constant_pool_count:常量池中常量个数

  值等于常量池中常量个数加1。

5.constant_pool:常量池

  存储具体的常量信息,每个常量的前1个字节为常量类型标识,用于指明常量的类型,以便JVM针对不同的类型进行解析。

6.access_flags:访问标识

  存储类的访问权限和属性信息,占用2个字节。

技术分享

  表格中未提到的位预留,应当被设置为0且在运行时被JVM忽略。

7.this_class:当前类名称

  指向常量池中的一个类型为CONSTANT_Class_info结构的常量,占用2个字节。

8.super_class:父类名称

  指向常量池中的一个类型为CONSTANT_Class_info结构的常量,占用2个字节。如果值为0,则表示该类的父类为java.lang.Object。接口的super_class值必须为0。

9.interfaces_count:实现接口数量

  直接父接口个数,占用2个字节。

10.interfaces:实现的接口

  以源文件中定义的顺序指明父接口,每个值都指向常量池中的一个类型为CONSTANT_Class_info类型的常量,每个占用2个字节。

11.fields_count:字段数量

  类字段或实例字段的数量,占用2个字节。

12.fields:字段

  字段的描述信息,无固定长度,类型为field_info,不包括继承来的字段信息。

13.methods_count:方法数量

  类方法或实例方法的数量,占用2个字节。

14.methods:方法

  方法的描述信息,无固定长度,类型为method_info,不包括继承来的方法信息。

15.attributes_count:属性数量

  属性个数,占用2个字节。

16.attributes:属性

  属性信息,无固定长度,类型为attribute_info。

17.总结

 技术分享


参考资料:

1.《深入理解Java虚拟机-JVM高级特性与最佳实践》

2.《The Java Virtual Machine Specification-Java SE 8 Edition》

 

2.Class文件结构

标签:

原文地址:http://www.cnblogs.com/qhdxqxx/p/4907754.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!