深入理解JAVA虚拟机(三)

JAVA对象内存结构分析

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

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

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

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

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

相关推荐
Dxy123931021615 小时前
Python如何删除文件到回收站
开发语言·python
斌味代码15 小时前
RAG 实战:用 LangChain + DeepSeek 搭建企业私有知识库问答系统
开发语言·langchain·c#
途经六月的绽放15 小时前
常见设计模式及其应用示例
java·设计模式
REI-15 小时前
黑马点评项目启动
java·后端
AlunYegeer15 小时前
【JAVA】网关的管理原理和微服务的Interceptor区分
java·服务器·前端
懷淰メ15 小时前
python3GUI---基于PyQt5+YOLOv8+DeepSort的智慧行车可视化系统(详细介绍)
开发语言·yolo·计算机视觉·pyqt·yolov8·deepsort·车距
weixin_6495556715 小时前
C语言程序设计第四版(何钦铭、颜晖)第十一章指针进阶之查找子串
c语言·开发语言
应用市场15 小时前
王者荣耀式匹配系统深度解析:从 ELO 到 TrueSkill 的完整工程实现
开发语言·python
说实话起个名字真难啊15 小时前
前端JS审计:渗透测试的“破局之钥”
开发语言·前端·javascript·测试工具
xieliyu.15 小时前
Java、抽象类
java·开发语言