乐趣区

关于java:JVM系列2Class文件结构

JVM 系列笔记目录

  • 虚拟机的根底概念
  • class 文件构造
  • class 文件加载过程
  • jvm 内存模型
  • JVM 罕用指令
  • GC 与调优

如何查看 class 字节码文件

在 idea 中能够通过插件 BinEd 来查看二进制或十六进制文件。展现一个简略类的 class 文件源字节码,看不懂?请往下看。

更直观一点的能够在 idea 中装置插件 jclasslib,选中类文件 ->View-> Show Bytecode With jclasslib。该插件分明地看到.class 文件的各个组成部分。

另外一种形式,通过 javap 查看。

Class 文件构造

文件构造由 16 个局部组成,约定下 u4 指占用的字节数为 4,u2 同理。这里指简略阐明各个局部的含意,不做具体开展,如想深刻理解,参考 JVM 标准第 4 章节 The class File Format

  • Magic Number class 文件标志符 u4,ca fe ba be
  • Minor Version class 文件小版本号 u2
  • Major Version 主版本号 u2,主版本 + 小版本号形成 jdk 版本,jdk8 默认 52.0,jdk7 默认为 51.0
  • constant_pool_count 常量池的大小 u2
  • constant_pool 长度为 constant_pool_count- 1 的数组,class 文件中最简单的局部
  • access_flag 类修饰符
  • this_class 类全名,指向常量池某个元素
  • super_class 父类名 指向常量池的某个元素
  • interface_count 实现的接口数量
  • interfaces 接口
  • fields_count 字段数量
  • fields 字段
  • method_count 办法数量
  • methods 办法
  • attribute_count 附加属性数量
  • attributes 附加属性

总结

class 文件构造很简单,本为只是作简略介绍,为 JVM 系列【3】Class 文件加载过程 和 JVM 系列【4】内存模型作为根底知识点的铺垫。真正想深刻了解 class 文件构造的,请浏览官网 JVM 标准。

常识分享,转载请注明出处。学无先后,达者为先!

退出移动版