klass模型

学java的都知道,我们的代码是由一个个类文件组成,类文件编译成class文件放在jvm中去运行。那么class文件在jvm中又是如何存储呢。存储到jvm中的就是class文件吗?
Java的每个类,在JVM中,都有一个对应的Klass类实例与之对应,存储类的元信息如:常量池、属性信息、方法信息
Klass类的继承结构如下图所示:


图片.png

首先所有的klass文件都存储在jvm的metadata区。分为2个大类。
一个是普通的类文件对应的InstanceKlass类的实例。一个是java运行时生成的
ArrayKlass类。
InstanceKlass有3个子类:
1.InstanceMirrorKlass:用于表示java.lang.Class,Java代码中获取到的Class对象,实际上就是这个C++类的实例,存储在堆区,学名镜像类
2.InstanceRefKlass:用于表示java/lang/ref/Reference类的子类
3.InstanceClassLoaderKlass:用于遍历某个加载器加载的类
ArrayKlass有2个子类:
1.TypeArrayKlass:用于表示基本类型的数组
2.ObjArrayKlass:用于表示引用类型的数组

你可能感兴趣的:(klass模型)