对象的内存布局

在Java虚拟机(HotSpot)中,对象在 Java 内存中的 存储布局 可分为三块:

  1. 对象头 存储区域
  2. 实例数据 存储区域
  3. 对齐填充 存储区域

对象头区域:

存储对象自身的运行时数据,如:哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳。

存储对象类型指针,即对象指向类元数据的指针,JVM可以确定这个对象属于哪个类的实例。

如果是数组,对象头中还有一块记录数组长度的数据。

实例数据区域:

  • 代码中定义的字段内容。

对齐填充区域:

  • 占位符。
  • 非必须。

说明:占位符起占位作用,因为对象的大小必须是8字节的整数倍,而因HotSpot VM的要求对象起始地址必须是8字节的整数倍,且对象头部分正好是8字节的倍数。因此,当对象实例数据部分没有对齐时(即对象的大小不是8字节的整数倍),就需要通过对齐填充来补全。

相关推荐
雨中飘荡的记忆6 分钟前
优惠券系统设计与实现
java
1***t8276 分钟前
将 vue3 项目打包后部署在 springboot 项目运行
java·spring boot·后端
芬加达10 分钟前
leetcode34
java·数据结构·算法
__万波__14 分钟前
二十三种设计模式(三)--抽象工厂模式
java·设计模式·抽象工厂模式
二川bro28 分钟前
Python在AI领域应用全景:2025趋势与案例
开发语言·人工智能·python
better_liang37 分钟前
每日Java面试场景题知识点之-线程池配置与优化
java·性能优化·面试题·线程池·并发编程
q***25138 分钟前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
N***H48643 分钟前
使用Springboot实现MQTT通信
java·spring boot·后端
CoderYanger1 小时前
优选算法-队列+宽搜(BFS):72.二叉树的最大宽度
java·开发语言·算法·leetcode·职场和发展·宽度优先·1024程序员节
赵大海1 小时前
黑马《Java架构师实战训练营 (含完整资料)》
java