Java类对象内存布局

Java类对象内存布局

对象头

mark word

存储对象运行时数据,如 HashCode 、GC年龄代、线程以及锁相关的信息。

32位虚拟机中其大小为 4字节,64位虚拟机中其为 8字节。

类型指针

指向其类结构元数据(方法区中类信息),虚拟机通过这个来确定这个对象是哪个类的实例。

默认大小为4 字节,若64位虚拟机中取消指针压缩则为 8字节(Jdk 1.6之后默认开启指针压缩)。

数组长度

        非必须存在,只有 数组类型的对象 才会存在该数据空间。

默认大小为4 字节

空白填充

只会在数组类型对象才会存在。

数组类型的对象 :

 若是64位虚拟机且取消指针压缩则会产生 4字节 的空白填充。

实例数据

 基础类型

如 int 4字节、long 8字节计算。

引用类型

存储对应引用对象地址的指针。

默认大小为4 字节,若64位虚拟机中取消指针压缩则为 8字节。

补齐填充

保证整个对象大小维持在 8字节的整数倍,不够整数倍大小则填充对象至8字节整数倍大小。 

posted @ 2021-11-20 21:09  FCmmmmmm  阅读(69)  评论(0编辑  收藏  举报