关于对象的种种问题
1. 对象的创建过程
2. 对象在内存中的存储布局
普通对象:
- 对象头:mark word (8个字节)
- ClassPointer(类指针):-XX:+UseCompressedClassPointers 开启为4字节 不开启为8字节
- 实例数据
- 引用类型:-XX:+UseCompressedClassPointers 开启为4字节 不开启为8字节 Oops Ordinary Object Pointers
- Padding对齐,8的倍数
数组对象
- 对象头:mark word (8个字节)
- ClassPointer(类指针):-XX:+UseCompressedClassPointers 开启为4字节 不开启为8字节
- 数组长度
- 数组数据
- Padding对齐,8的倍数
3.对象头具体包括什么
对象定位
- 句柄池(GC会比较快)
- 直接指针(hotspot的实现用的就是直接指针)