一个简单Class文件的分析(多图)
一个简单Class文件的分析(多图)
Class文件是Java中类或接口的紧凑二进制表示形式,可以被JVM加载,链接,执行。这里通过看一个简单的Class文件作为入门。
开始
package com.vonzhou.learn.jvm.klass;
public class Foo {
private int m;
public int inc() {
return m + 1;
}
}
Class结构体
一个Class文件可以用如下的结构体抽象:
Step by Step
接下来就是对照着字节码和JVM规范阅读的过程,对自己多点耐心。
常量池中每常量项是由一个1B的tag(标识常量项的类型)和字节数组表示的常量内容构成的,常量标签有以下几种:
常量池
到这里我们估计有点迷失了,再来回顾下Class文件的结构:
访问标志
常量池过后是2B的访问标志,flag是各种情况做掩码实现,有:
这里
类引用
接下来的2B是this_class指向我们的类名, super_class指示父类。
这里没有实现接口:
成员变量
方法
后续
具体的指令在这里没有分析。