原始博客的地址:
https://lyldalek.notion.site/JVM-0x5-196d56b78fb7402798fa8b33e6d30214
该项目的地址:
这一篇,我们主要是实现方法区(现在叫元数据区)里面的东西。方法区主要存放从class文件获取的类信息。此外,类变量也存放在方法区中。当Java虚拟机第一次使用某个类时,它会搜索类路径,找到相应的class文件,然后读取并解析class文件,把相关信息放进方法区。
放进方法区的东西有:
其实这些信息在之前我们解析 class 文件的时候都遇到过。现在只不过我们换一种形式来表示这些信息。
之前我们已经可以找到 class 文件,并把其内容加载到内存中,对其解析成一个 ClassFile 的结构,但是 ClassFile 中的内容仍然无法直接在方法区使用,还需要进一步的转换。
我们先实现自己的 Class,为了与Java本身的类区分开,就加一个My前缀。
public class MyClass {
}
类的方法与字段结构比较像,我们写一个父类:
public class ClassMember {
protected int accessFlag;
protected String name;
protected String descriptor;
protected MyClass myClass;
}