JVM是由一个对应角色的oop对象来描述Java对象
instanceOopDesc
用来描述普通实例对象
arrayOopDesc
用来描述数组对象
这些类型的oop对象均是继承自oopDesc。
oopDesc主要包含
- _mark
_mark是一个markOop实例,它描述了一个对象的头信息,用于存储对象的运行时记录信息,如哈希值、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等 - _metadata
- 一个普通_klass
- 一个压缩后的_compressed_klass