JVM系列(之class文件)

JVM系列(之class文件)

Class文件结构

class文件结构

class文件采用一种伪结构(无符号数:描述数字、索引引用、数量值或按UTF-8编码的字符串值,表:由多个无符号数或其他表构成的复合型数据结构,整个class文件就是一个表)进行存储。

文件结构说明

  • 魔数:每个class文件的前4个字节,用于确定这个文件是否是一个可被虚拟机接受的class文件。
  • 常量池:第一个u2数据表示常量的个数,索引从1开始。将索引0空出是为了让指向常量池索引的在特殊情况下表示不引用常量池的项目。每个常量都是一个以u1开头的表(1-12去掉2,表示属于哪种常量),每个常量都有自己的结构。

      字面量:文本字符串,final声明的常量。

       符号引用:类和接口的全限定名;字段的名称和描述符;方法的名称和描述符。

      javap –verbose classfile输出class详细描述信息。

   

  • 访问标志:识别一些类或接口的访问信息。

   

  • 类索引、父类索引、接口索引:由这三个数据来确定类的继承关系。

    类索引和父类索引各自指向一个CONSTANT_Class_info的类型常量。

  • 字段表集合:描述接口或类中声明的变量,不包括方法内部的变量。

   

    access_flags:表示作用域(public/protected/private),实例变量(static),可变性(final),可并发性(volatile),序列化(transient)

    name_index:表示简单名称,

    descriptor_index:表示方法和字段的描述符,描述字段的数据类型,方法的参数列表和返回值。

    attribute_count:表示属性个数,如果大于1则后面还接属性信息attribute_info.

  • 方法表集合:字段格式与字段表集合格式一样。
  • 属性表集合

   

  attribute_name_index:属性名称的索引,会索引常量池里面的一个CONSTANT_Utf8_info的一个常量。

 

转载于:https://www.cnblogs.com/mixes/p/4108633.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值