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 @   FCmmmmmm  阅读(72)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示