https://segmentfault.com/a/1190000007652363 值得一看
对象的内存布局
虚拟机中,对象在内存中的布局划分为3
个区域:对象头,实例数据以及对齐填充。
对象头
一般包含两部分信息,第一部分用于存储对象自身的运行时数据,例如HashCode
、GC
分代年龄等信息。另一部分用于存储对象的类型指针,该指针指向它的类元数据,JVM
通过这个指针确定对象是哪个类的实例。之前提到对象头一般包含两部分信息,这是因为如果对象是一个数组,那么对象头还需要有额外的空间用于存储数组的长度。
实例数据
实例数据部分是对象真正存储有效信息的区域,存储了代码中定义的各种字段的内容,包括从父类继承下来的字段和子类中定义的字段。
对齐填充
对齐填充这部分不是必须存在的,这部分仅仅是起着占位符的作用。