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

深入理解JAVA虚拟机(三)

JAVA对象内存结构分析

java对象主要由如下三部分构成:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。其中对象头分为两部分:一部分存储运行时的数据(Mark Word)、另一部分指向所属类型的元数据的指针。

在32位系统中,Mark Word通常是32bit,类型指针32bit,加起来64bit。

锁状态25bit4bit1bit2bit
23bit2bit是否偏向锁锁标志位
无锁态对象哈希码hashCode分代年龄001
可偏向偏向线程ID偏向时间戳Epoch分代年龄101
轻量级锁定指向锁记录的指针00
重量级锁定指向重量级锁的指针10
GC标记空,不需要记录信息11

 重点介绍一下:Mark Word的构成。用于存储哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。

锁的流转原理,请阅读另外一篇:深入理解JAVA虚拟机(四)-CSDN博客


http://www.kler.cn/a/368930.html

相关文章:

  • 玩转PyCharm:常用操作和快捷键
  • 技术成神之路:设计模式(二十一)外观模式
  • CSS实现回到顶部且平滑过渡
  • 机器学习 - 概述、数据集、Scikit-learn
  • Docker下载途径
  • 大厂面经:京东嵌入式面试题及参考答案
  • go高并发之路——本地缓存
  • 牛客周赛65(C++实现)
  • 练习LabVIEW第二十二题
  • K8S如何基于Istio重新实现微服务
  • git push关联的远程仓库
  • 京东商品详情API全攻略:返回值字段一网打尽
  • JsonPath 更便捷的JSON解析工具
  • Vue2自定义指令及插槽
  • AI 提示词(Prompt)入门 :ChatGPT 4.0 高级功能指南
  • 「C/C++」C++ STL容器库 之 std::list 双向链表容器
  • 不用梅森公式看流程图写式子 和看式子画流程图
  • JavaSE:16、Java IO
  • XJ05、消费金融|额度生命周期管理及额度产品设计
  • glibc中xdr的一个bug
  • python kafka 发送/接收 消息
  • 协议 HTTP
  • WPF+MVVM案例实战(八)- 自定义开关控件封装实现
  • Docker 常用命令全解析:提升对雷池社区版的使用经验
  • 我在1024谈华为
  • SLAM是什么,分类