微信公众号:【老张聊天】
一起改变,一起提升,一起进步啊!!
[欢迎大家扫码关注,转发,点赞!]
以下大部分内容基于周志明的《深入理解Java虚拟机 第三版》,第三版相比第二版更新了很多知识点。pdf版本已经上传到网盘,微信扫码关注回复【jvm】获取网盘地址和提取码

接着上一篇对象的创建,现在来讲下对象的内存布局。
二、对象的内存布局
HotSpot虚拟机中,对象的内存布局分为三个部分:【对象头(Header)】【实例数据(Instance Data)】【对齐补充(Padding)】
1、【对象头】
HotSpot虚拟机的【对象头】部分包括两类信息。
- 第一类是用于存储对象自身的运行时数据,如HashCode,GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。这部分数据的长度在32位和64位的虚拟机(未开启指针压缩中)分别是32bit和64bit,官方称为【Mark Word】
- 对象头里的信息是与对象自身定义的数据无关的额外存储成本,考虑到虚拟机的空间效率,根据对象状态的不同,Markword可以复用自己的空间。

- 对象头里的信息是与对象自身定义的数据无关的额外存储成本,考虑到虚拟机的空间效率,根据对象状态的不同,Markword可以复用自己的空间。
- 第二类是类型指针,即对象指向它的类型元数据的指针,Java虚拟机通过这个指针来确认该对象属于哪个类的实例。
- 查找对象的元数据信息并不是一定要经过对象本身,这点后面会讨论。
- 如

本文详细探讨了HotSpot虚拟机中对象的内存布局,包括对象头、实例数据和对齐填充三部分。对象头包含运行时数据和类型指针,实例数据存储字段信息,对齐填充确保对象大小为8字节整数倍。对象的访问定位可通过句柄或直接指针,HotSpot主要使用直接指针。内容基于《深入理解Java虚拟机 第三版》。
-02-HotSpot虚拟机对象探秘(2)&spm=1001.2101.3001.5002&articleId=106103646&d=1&t=3&u=2f532657c5f5410ea7c4de842ba4765a)
2047

被折叠的 条评论
为什么被折叠?



