对象的内存布局

2017-09-25  本文已影响0人  SinX竟然被占用了

分为三个部分:

(1)对象头

(2)实例数据

实例数据部分是对象真正存储的有效信息,也是在程序代码中所定义的各种类型的字段内容。无论是从父类继承下来的,还是在子类中定义的,都需要记录起来。这部分的存储顺序会受到虚拟机分配策略参数和字段在Java源码中定义顺序的影响。

(3)对齐填充

对齐填充并不是必然存在的,也没有特殊的含义,它仅仅起着占位符的作用。由于HotSpot VM的自动内存管理系统要求对象起始地址必须是8字节的整数倍,换句话说,就是对象的大小必须是8字节的整数倍。而对象头部分正好是8字节的倍数(一倍或者两倍),因此,当对象实例数据部分没有对齐时,就需要通过对齐填充来补全。

上一篇下一篇

猜你喜欢

热点阅读