JVM-图解字节码结构

390 阅读1分钟

字节码相关产物

Knot-class.png

  • 从源码出发可以然后通过javac命令就可以得到.class, 这个文件是一个二进制文件,一般编辑器是无法打开的
  • .class通过javap去得到字节码的解析文件(可视化)
  • 直接用HexDump(可以用vs code中的HexDump插件)打开.class可以看到二进制码
  • 用IDEA直接打开,就解析成Java源码了

字节码结构

Knot-字节码结构.png

  • 字节码的结构是层层嵌套的,主要分为两种,
    • 一般大小为2字节的属性(可以类比为java中的基本数据类型)
    • 大小为n字节的复合数据结构(可类比为Java中的Object)
  • 魔数固定为cafe babe,用于判断是否是.class文件
  • 图中标绿色的都是比较重要的复合数据结构
  • Class Name, Super ClassName, Interface Sets信息可以确定该类的继承结构