当前位置: 首页 > article >正文

Java对象头

一、对象在堆内存中的布局

1.定义

在HotSpot虚拟机中,对象在堆内存的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data)、和对齐填充(Paddin)。

二、对象在堆内存中的存储布局

  • 对象头(在64位系统中,Mark Word占了8个字节,类型指针占了8个字节,一共是16个字节)
    • 对象标记(Mark Word)
      • 默认存储对象的HashCode、分代年龄和锁标志等信息。
      • 这些信息都是对象自身定义无关的数据,所以Mark Word被设计成一个非固定的数据结构以便在极小的空间内存春初尽量多的数据。
      • 它会根据对象的状态复用自己的存储空间,也就是说在允许期间Mark Word里存储的数据会随着锁标志位的变化而变化。
    • 类元信息(类型指针)
      • 对象指向他的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。
  • 实例数据
    • 存放类的属性(Field)数据信息,包括父类的属性信息。
  • 对齐填充(保证8个字节的倍数)
    • 虚拟机要求对象起始地址必须是8字节的整数倍,填充数据不是必须存在的,仅仅是为了字节对齐,这部分内存按8字节补充对齐。

三、Mark Word(64位虚拟机)


http://www.kler.cn/news/330673.html

相关文章:

  • Dijkstra算法,动态规划和滑动窗口
  • 【分别为微服务云原生】9分钟ActiveMQ延时消息队列:定时任务的革命与Quartz的较量
  • MES(软件)系统是什么?MES系统为何如此重要呢?
  • 【RabbitMQ 项目】服务端:消费者管理模块
  • c#增删改查 (数据操作的基础)
  • Python 从入门到实战32(数据库MySQL)
  • VMware中Ubuntu系统Docker正常运行但网络不通(已解决)
  • java 的三种IO模型(BIO、NIO、AIO)
  • 蓝桥杯备赛---2.新建工程
  • 论文不同写作风格下的ChatGPT提示词分享
  • Linux学习之路 -- 线程 -- 线程池
  • RabbitMq生产者可靠性
  • Python安装流程(Windows + MAC)
  • 【CocosCreator 3.x】实现物体按指定轨迹移动
  • python开源代码自学问题解决(requests+openpyxl+pymysql)
  • 云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
  • 【笔记】1.4.4断裂判据
  • 分布式理论:拜占庭将军问题
  • 计算机视觉周边技术解析:从基础到前沿
  • 【算法】DFS 系列之 穷举/暴搜/深搜/回溯/剪枝(上篇)