一线互联网大厂面试题:关于对象的内存布局

关于对象的种种问题

一线互联网大厂面试题:关于对象的内存布局

1. 对象的创建过程

一线互联网大厂面试题:关于对象的内存布局

2. 对象在内存中的存储布局

普通对象:

  1. 对象头:mark word (8个字节)
  2. ClassPointer(类指针):-XX:+UseCompressedClassPointers 开启为4字节 不开启为8字节
  3. 实例数据
    1. 引用类型:-XX:+UseCompressedClassPointers 开启为4字节 不开启为8字节 Oops Ordinary Object Pointers
  4. Padding对齐,8的倍数

数组对象

  1. 对象头:mark word (8个字节)
  2. ClassPointer(类指针):-XX:+UseCompressedClassPointers 开启为4字节 不开启为8字节
  3. 数组长度
  4. 数组数据
  5. Padding对齐,8的倍数

3.对象头具体包括什么

一线互联网大厂面试题:关于对象的内存布局
一线互联网大厂面试题:关于对象的内存布局

对象定位

  1. 句柄池(GC会比较快)
  2. 直接指针(hotspot的实现用的就是直接指针)