目录
对象内存布局
存储对象分为三部分:
1. 对象头
-
存储对象自身的运行时数据(Mark Word)
Mark Word是一个有着动态定义的数据结构,前面的标志位不同,表示着不同的状态。

-
类型指针(指向类的指针)
Java虚拟机通过这个指针来确定该对象是哪个类的实例。
如果对象是个java数组,对象头中还需要有一块用于记录数组长度的数据,对象是数组对象头有3样东西,其他都是2样。
2. 实例数据
对象a中的全部信息,private int id;
3. 对齐填充
这并不是必然存在的,也没有特别的含义,它仅仅起着占位符的作 用。由于HotSpot虚拟机的自动内存管理系统要求对象起始地址必须是8字节的整数倍,换句话说就是任何对象的大小都必须是8字节的整数倍。
本文介绍了Java对象在内存中的布局方式,包括对象头、实例数据和对齐填充三个部分。对象头包含MarkWord和类型指针等信息,对于数组对象还包括长度信息。实例数据则包含了对象的实际数据成员。
252

被折叠的 条评论
为什么被折叠?



