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

并发编程之Java 对象头的详细解析

Java 对象头

以 32 位虚拟机为例

普通对象

|--------------------------------------------------------------|
|                    Object Header (64 bits)                   |
|------------------------------------|-------------------------|
|       Mark Word (32 bits)          |   Klass Word (32 bits)  |
|------------------------------------|-------------------------|

数组对象

|---------------------------------------------------------------------------------|
|                             Object Header (96 bits)                             |
|--------------------------------|-----------------------|------------------------|
|        Mark Word(32bits)       |   Klass Word(32bits)  |  array length(32bits)  |
|--------------------------------|-----------------------|------------------------|

其中 Mark Word 结构为

|-------------------------------------------------------|--------------------|
|                  Mark Word (32 bits)                  |        State       |
|-------------------------------------------------------|--------------------|
|    hashcode:25  | age:4 |   biased_lock:0   |   01    |       Normal       |
|-------------------------------------------------------|--------------------|
|thread:23|epoch:2| age:4 |   biased_lock:1   |   01    |       Biased       |
|-------------------------------------------------------|--------------------|
|          ptr_to_lock_record:30              |   00    | Lightweight Locked |
|-------------------------------------------------------|--------------------|
|          ptr_to_heavyweight_monitor:30      |   10    | Heavyweight Locked |
|-------------------------------------------------------|--------------------|
|                                             |   11    |    Marked for GC   |
|-------------------------------------------------------|--------------------|

64 位虚拟机 Mark Word

|--------------------------------------------------------------------|--------------------|
|                          Mark Word (64 bits)                       |        State       |
|--------------------------------------------------------------------|--------------------|
| unused:25 | hashcode:31 | unused:1 | age:4 | biased_lock:0 |  01   |        Normal      |
|--------------------------------------------------------------------|--------------------|
| thread:54 |   epoch:2   | unused:1 | age:4 | biased_lock:1 |  01   |        Biased      |
|--------------------------------------------------------------------|--------------------|
|                    ptr_to_lock_record:62                   |  00   | Lightweight Locked |
|--------------------------------------------------------------------|--------------------|
|                 ptr_to_heavyweight_monitor:62              |  10   | Heavyweight Locked |
|--------------------------------------------------------------------|--------------------|
|                                                            |  11   |    Marked for GC   |
|--------------------------------------------------------------------|--------------------|

参考资料

jvm - What is in Java object header? - Stack Overflow

相关文章:

  • 3个Tips,用“AI”开启新生活
  • 使用Python抓取抖音直播间数据的简易指南【第152篇—抓取数据】
  • 使用 PyOpenGL 进行 2D 图形渲染总结
  • 康奋威科技邀您到场参观2024长三角快递物流展
  • 阿里云原生:如何熟悉一个系统
  • Docker入门到实践之环境配置
  • 【算法每日一练]-图论(保姆级教程篇16 树的重心 树的直径)#树的直径 #会议 #医院设置
  • 【java数据结构】基于java提供的ArrayList实现的扑克牌游戏-(附源码~)
  • 上位机图像处理和嵌入式模块部署(qmacvisual图像识别)
  • 部署prometheus 监控k8s集群
  • Rust之构建命令行程序(五):环境变量
  • FANUC机器人零点标定的基本步骤(出厂数据)
  • PINN物理信息网络 | 全局自适应物理信息神经网络SA-PINN
  • 5.windows Ubuntu 子系统,测序数据质量检测。
  • 智能合约语言(eDSL)—— 使用rust实现eDSL的原理
  • Google 是如何开发 Web 框架的
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Consul Config 使用Git做版本控制的实现
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Debian下无root权限使用Python访问Oracle
  • JAVA_NIO系列——Channel和Buffer详解
  • Java面向对象及其三大特征
  • leetcode讲解--894. All Possible Full Binary Trees
  • PHP的类修饰符与访问修饰符
  • Protobuf3语言指南
  • SpiderData 2019年2月16日 DApp数据排行榜
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 开发基于以太坊智能合约的DApp
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 聊聊hikari连接池的leakDetectionThreshold
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 浅谈web中前端模板引擎的使用
  • 深入浏览器事件循环的本质
  • 我感觉这是史上最牛的防sql注入方法类
  • 一个完整Java Web项目背后的密码
  • 异步
  • 怎样选择前端框架
  • const的用法,特别是用在函数前面与后面的区别
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 移动端高清、多屏适配方案
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • (7)STL算法之交换赋值
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (全注解开发)学习Spring-MVC的第三天
  • (十一)c52学习之旅-动态数码管
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .Net MVC + EF搭建学生管理系统