JVM零基础到高级实战之Java程序员不可不知的对象结构
JVM零基础到高级实战之Java程序员不可不知的对象结构
前言
JVM零基础到高级实战之Java程序员不可不知的对象结构
JAVA对象内存布局
- 对象头用于存储对象的元数据信息
- Mark Word 部分数据的长度在32位和64位虚拟机(未开启压缩指针)中分别为32bit和64bit,存储对象自身的运行时数据如哈希值等。Mark Word一般被设计为非固定的数据结构,以便存储更多的数据信息和复用自己的存储空间。
- 类型指针 指向它的类元数据的指针,用于判断对象属于哪个类的实例。
- 实例数据
- 实例数据存储的是真正有效数据,如各种字段内容,各字段的分配策略为longs/doubles、ints、shorts/chars、bytes/boolean、oops(ordinary object pointers),相同宽度的字段总是被分配到一起,便于之后取数据。父类定义的变量会出现在子类定义的变量的前面。
- 对齐填充
- 对齐填充部分仅仅起到占位符的作用,并非必须
总结
本文介绍了JVM零基础到高级实战之Java程序员不可不知的对象结构的全部内容,后续我会不断更新,喜欢的请点击关注,JVM系列将会持续更新下去。