在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头,实例数据和对齐填充。
HotSpot虚拟机的对象头包括两部分信息,第一部分用于存储对象自身的运行时数据,如哈希吗、GC分代年龄,锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。对象头的另外一个部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。
实例数据部分是对象真正存储的有效信息,也是在程序代码中所定义的各种类型的字段内容。
对齐填充并不是必然存在的,也没有特别的含义,仅仅起者占位符的作用。
摘抄自《深入理解Java虚拟机:JVM高级特性与最佳实践》(第二版) 周志明著