文章目录
- Java对象内存布局和对象头
- 对象内存布局
- 对象头
- Mark Word
- 实例数据
- 对齐填充
- 对象头和性能
- 总结
Java对象内存布局和对象头
在Java中,对象是一个类的实例化,也就是说,一个对象包含其类的属性和方法。当我们实例化一个对象时,JVM会在Heap中为其分配一块连续的内存空间。这篇文章将讨论Java中对象的内存布局和对象头的结构。
对象内存布局
Java对象内存布局主要分为三个部分:
- 对象头
- 实例数据
- 对齐填充
对象头
对象头包含了对象的元数据信息,包括对象的哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等数据。对象头的长度取决于具体JVM的实现和对象的状态,一般在32位虚拟机下为8字节,在64位虚拟机下为16字节。
Mark Word
Mark Word(标记字)是对象头中最重要的一部分,它包含了对象的状态