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

JVM初探之类文件结构

时间:2017-04-10 20:38:28      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:int   常量   类索引   utf8   计数   常量池   识别   参考   文件的   

java 的 .class 文件字节码如图:
技术分享
Class 文件是一组以8字节为基础单位的二进制流,各个数据项目有着严格的结构。下面我们介绍下class文件的结构。

魔数
  class文件的头4个字节是魔数:  技术分享,他的作用便是验证这个文件是否是一个java虚拟机可以使用的文件,

版本号

  接下来的是两个字节的小版本号,和两个字节的大版本号:  技术分享

常量池结构

  它分为两个部分:

第一部分是:常量池的容量: 技术分享 即二进制 54 ,代表了 53 项常量,注意这里的容量计数是从 1 开始的即索引范围是 1 ~ 53。

第二部分是:常量池的内容:常量池有的项目类型

              CONSTANT_Utf8_info     1    UTF-8 编码的字符串

              CONSTANT_Integer_infor   3    整型字面量

                    ...      

              CONSTANT_Class_infor     7      类或接口的符号引用

                    ...

这些项目类型还有自己的结构,这里先不写出来了。这一部分的字节码如图:  技术分享

就是常量池容量后面的 53 个常量,一大堆的字节。后面其实还有的。。。。 就到这里吧。

访问标志

    常量池之后就是两个字节的访问标志,用于识别类或者接口层次的访问信息。

      一些访问标志:

            ACC_PUBLIC  0x0001    是否为 public 类型

            ...

接下来是类索引、父类索引与接口索引集合

字段表集合

方法表集合

属性表集合

 

参考:深入理解java虚拟机  -- 周志明 著

JVM初探之类文件结构

标签:int   常量   类索引   utf8   计数   常量池   识别   参考   文件的   

原文地址:http://www.cnblogs.com/angell-N/p/6690529.html

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