JVM类加载
Klass
class和klass的区别:
- class是java类(java代码
- klass是java类在JVM的存在形式(c++代码
Klass类分别由InstanceKlass和ArrayKlass继承,其中InstanceClass用来表示普通的java类即非数组类,ArrayKlass是来表示Java数组的元信息。
InstanceKlass
-
普通类对应的是instanceKlass类的实例。
类加载器将.class文件加载进系统,然后将.class文件生成的类的元信息就是存储在InstanceKlass的。 -
InstanceKlass的几个子类又去存放子类对应存放的东西,由此也可以看到class对象和存放元信息的结构是分开的(元信息是在InstanceKlass,class对象是在InstanceMirrorKlass
-
对象内存结构的klass pointer中的klass就是指InstanceKlass及其子类
-
我们把java程序中的一个地址在 HSDB解析出来就可以看到
java中的类在jvm中是InstanceKlass
class对象是InstanceMirrorKlass