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