JVM 从入门到入土 ③:对象布局
关于对象面试题:
对象大小(64 位机)
观察虚拟机配置
java -XX:+PrintCommandLineFlags -version
普通对象
- 对象头:markword 8 字节
- ClassPointer 指针:-XX:+UseCompressedClassPointers 压缩打开为 4 字节,不开启为 8 字节
- 实例数据
- 引用类型:-XX:+UseCompressedOops 为 4 字节 不开启为 8 字节
Oops Ordinary Object Pointers
- 引用类型:-XX:+UseCompressedOops 为 4 字节 不开启为 8 字节
- Padding 对齐,8 的倍数
数组对象
- 对象头:markword 8 字节
- ClassPointer 指针同上
- 数组长度:4 字节
- 数组数据
- 对齐 8 的倍数
实验
1 | package com.mashibing.jvm.c3_jmm; |
markword
IdentityHashCode
死磕 Synchronized 底层实现,面试你还怕什么?
面试题深入解析:Synchronized 底层实现
死磕 Synchronized 底层实现 – 重量级锁
一文让你读懂 Synchronized 底层实现,秒杀面试官
对象定位
- 句柄池
- 直接指针