面试官:说说Java对象的组成

栏目: 服务器 · 发布时间: 5年前

内容简介:在java中对象对于我们来说再熟悉不过了,运用也简单,什么时候想要new一个,所以说啊咱们程序员不缺对象! 那我们真的了解对象吗?它由哪几部分组成呢? 在HotSpot虚拟机中,也就是我们的常用虚拟机。对象自身运行时的数据,例如:HashCode、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳、GC分代年龄等。这部分数据长度在32位和64位虚拟机(若未开启压缩指针)下分别为32bit和64bit。这部分称为"Mark Word"。并且Mark Word 被设计为

java 中对象对于我们来说再熟悉不过了,运用也简单,什么时候想要new一个,所以说啊咱们 程序员 不缺对象! 那我们真的了解对象吗?它由哪几部分组成呢? 在HotSpot虚拟机中,也就是我们的常用虚拟机。 对象组成分为3个区域:对象头、实例数据、对齐填充。

对象头

对象头分为两个部分:对象自身运行时的数据,类型指针

对象自身运行时的数据,例如:HashCode、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳、GC分代年龄等。这部分数据长度在32位和64位虚拟机(若未开启压缩指针)下分别为32bit和64bit。这部分称为"Mark Word"。

并且Mark Word 被设计为 没有固定的数据结构 用来在很小的空间内可以存储更多的信息,它会根据不同的状态存储不同的数据。例如在32位情况下,存储内容的变化如下

面试官:说说Java对象的组成

类型指针,也就是指向此对象的类元数据的指针,也就是通过这个指针来知道这个对象是哪个类的实例,但是不是所有的虚拟机实现都是通过这个来查找类的元数据的。

像HotSpot虚拟机,我们都知道平时new了一个对象保存的是这个对象的引用,这个引用存储的是对象实例的地址,而有些虚拟机的实现是这个引用存储的是一个对象的句柄地址,句柄地址又包含了对象实例地址和对象类型地址。

也就是这类虚拟机有一个句柄池,句柄池内部存储了对象的实例数据地址和类数据地址,所以这类虚拟机可以直接通过句柄池中类数据地址去找到这个对象是属于哪个类的实例。

面试官:说说Java对象的组成

如果对象是个数组,那还需要一块地方来记录数据的长度。

实例数据

实例数据就是对象真正存储的数据区,各种类型的字段内容。


以上所述就是小编给大家介绍的《面试官:说说Java对象的组成》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

在线

在线

王坚 / 中信出版集团股份有限公司 / 2016-9-1 / CNY 58.00

互联网成为基础设施,数据成为生产资料,计算成为公共服务。 移动互联网带来的真正影响,是人们的大部分时间都消耗在在线社会上了。 50多万年前的关键词是光明与黑暗,50多年前的关键词是数字和模拟,而今天的关键词是在线与离线。 移动互联网是比传统互联网在线程度更深的互联网。手机操作系统一旦做到了在线就会带来绝佳的用户体验。苹果手机不仅淘汰了传统手机,而且带来了一个新的时代。 对于......一起来看看 《在线》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具