JVM底层原理篇二:Class文件结构

概念

  • 对于进制类的字节码文件,计算机比人类更容易理解,而我们需要的就是制定文件的规则
  • Class File Format,就是Class文件制定给JVM的规则
  • idea字节码查看工具:sublime

基本核心参数说明:

  • Magic Number
    ○ 魔术编号,用来标识这个是一个什么样的文件,比如Java的文件开头就是 cafe babe
  • Minor Version
    ○ 版本小号
  • Major Version
    ○ 版本主号
  • constant_pool_count
    ○ 表示的是常量池里面有多少内容
  • constant_pool
    ○ 长度为 constant_pool_count - 1 的表,因为数组是从0开始,常量池是从1开始,所以要减1
    ○ 从1开始的原因:因为它有一个0存在,表示不指向任何常量池的一项,就可以用0表示,保留了一种可能性
  • access_flags
    ○ 整个class文件的修饰符
    ○ 例如整个class,你是用public修饰还是用privote修饰,这一类的标识
  • this_class
    ○ 当前类叫什么名字
  • super_class
    ○ 父类叫什么名字
  • interfaces_count
    ○ 实现了哪些接口
  • interfaces
    ○ 具体实现了哪些接口,接口的索引
  • fields_count
    ○ 有哪些属性
  • fields
    ○ 具体有哪些属性
  • methods_count
    ○ 有哪些方法
  • methods
    ○ 具体有哪些方法
    ○ 也就是方法的各种结构,标识,名字的索引,附加属性等
  • attributes_count - u2
    ○ 附加属性的有哪些
  • attributes
    ○ 附加属性的具体信息
    ○ 最重要的是方法表,也就是方法的字节码指令,JVM会先读一些指令进来,然后根据指令去看自己的指令表,找到执行后再来看方法

fields属性参数

access_flags: 这个属性的修饰符,有没有static?有没有final?
name_index: 名称的索引
descriptor_index: 描述符,到底是什么类型的
attributes: 附加的一些属性,不一定有
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值