目录
对象内存布局
存储对象分为三部分:
1. 对象头
-
存储对象自身的运行时数据(Mark Word)
Mark Word是一个有着动态定义的数据结构,前面的标志位不同,表示着不同的状态。
-
类型指针(指向类的指针)
Java虚拟机通过这个指针来确定该对象是哪个类的实例。
如果对象是个java数组,对象头中还需要有一块用于记录数组长度的数据,对象是数组对象头有3样东西,其他都是2样。
2. 实例数据
对象a中的全部信息,private int id;
3. 对齐填充
这并不是必然存在的,也没有特别的含义,它仅仅起着占位符的作 用。由于HotSpot虚拟机的自动内存管理系统要求对象起始地址必须是8字节的整数倍,换句话说就是任何对象的大小都必须是8字节的整数倍。