首页 > 其他 > 详细

对象的内存布局

时间:2020-11-05 17:56:18      阅读:26      评论:0      收藏:0      [点我收藏+]

对象的内存布局??

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

一.对象头??

? 1.包含两类信息:

? ①第一类是用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机分别为32个比特和64个比特----“Mark Word”

技术分享图片

? ②对象头的另外一部分是类型指针,即对象指向它的类型元数据的指针,Java虚拟机通过这个指针来确定该对象是哪个类的实例,并不是所有的虚拟机实现都必须在对象数据上保留类型指针,换句话说,查找对象的元数据信息并不一定要经过对象本身

二.实例数据??

? 对象真正存储的有效信息,即我们在程序代码里面所定义的各种类型的字段内容,无论是从父类继承下来的,还是在子类中定义的字段都必须记录起来

?

三.对齐填充??

? 它仅仅起着占位符的作用,如果对象实例数据部分没有对齐的话,就需要通过对齐填充来补全(对象头要是8字节的倍数)。

对象的内存布局

原文:https://www.cnblogs.com/Seraphire-yili/p/13932376.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!