对象内存结构分为三部分:
- 对象头
hash码,对象所属的年代,对象锁,锁状态标志,偏向锁(线程)ID,偏向时间,数组长度(数组对象)等 - 对象实际数据
即创建对象时,对象中成员变量,方法等 - 对齐填充
保证对象的大小是8字节的整数倍
MataData元数据指针——指向当前对象的Class对象
HotSpot虚拟机对象头MarkWord 32 位
不同的锁状态下,MarkWord的位的使用也是不一样的
可以在openJDK源码中markOop.hpp文件中会有32位、64位系统中对象头的详细说明