一、前言

当加载一个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的内部机构:


本文详细介绍了HotSpotJVM中对象的组成,包括InstanceKlass和InstanceOopDesc的结构。InstanceKlass存储在元空间,包含了类的信息,而InstanceOopDesc作为Java对象实例,存储在堆中,包含MarkWord、元数据指针、实例数据和填充数据等关键信息。
3817

被折叠的 条评论
为什么被折叠?



