一、前言
当加载一个Class时,会创建一个InstanceKlass对象,实例化的对象则对应InstanceOopDesc,instanceOopDesc继承自oopDesc,用于表示普通的Java对象,每次new一个Java对象就会创建一个新的instanceOopDesc实例,其中InstanceKlass存放在元空间
,InstanceOopDesc存放在堆
中。
二、HotSpot JVM中,对象组成
(1)Mark Work:GC信息(是否被引用)、hashCode信息、锁信息(是否被加锁等)
(2)元数据指针:指向元数据中的InstanceKlass
(java.lang.Class)
(3)实例数据:成员变量的值(基本类型保存值,引用类型保存内存地址)
(4)填充数据:无意义的填充
三、OOP
四、Klass
instanceKlass的内部机构: