您现在的位置是:群英 > 开发技术 > 编程语言
Java的对象组成包括什么,如何理解?
Admin发表于 2022-02-15 09:19:101104 次浏览

    Java的对象组成包括什么?关于Java中的对象,有很多朋友不是很理解,所谓的对象其实就是通过java类所产生的实体。这篇我们主要来了解Java的对象组成,对大家学习和理解Java的对象也有帮助,感兴趣的朋友就继续往下看吧。

    例如:盖楼房的图纸就是Java类,根据这个图纸修建起来的能够被看见,被使用的这个实际存在的楼房,就是相当于是用过这个图纸得到的对象。ava类实际是一个抽象意义上的概念,对象就是通过这个java类的抽象概念具体化之后的一个具体概念。

    在HotSpot虚拟机中,也就是我们的常用虚拟机。对象组成分为3个区域:对象头、实例数据、对齐填充。

    对象头

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

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

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

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

    像HotSpot虚拟机,我们都知道平时new了一个对象保存的是这个对象的引用,这个引用存储的是对象实例的地址,而有些虚拟机的实现是这个引用存储的是一个对象的句柄地址,句柄地址又包含了对象实例地址和对象类型地址。也就是这类虚拟机有一个句柄池,句柄池内部存储了对象的实例数据地址和类数据地址,所以这类虚拟机可以直接通过句柄池中类数据地址去找到这个对象是属于哪个类的实例。

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

    实例数据

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

    对齐填充

    这部分内容没什么别的意义,就是起着占位符的作用,主要是因为HotSpot虚拟机的内存管理要求对象的大小必须是8字节的整数倍,而对象头正好是8个字节的整数倍,但是实例数据不一定,所以需要对齐填充补全。

    现在大家对于Java的对象组成及含义应该都清楚了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多Java对象的内容,大家可以关注群英网络其它相关文章。




文本转载自PHP中文网

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

)
相关信息推荐
2022-06-24 17:56:55 
摘要:离线访问对基于网络的应用而言越来越重要,这篇文章主要介绍了HTML5 manifest离线缓存的示例代码的相关资料,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
2022-10-14 17:56:32 
摘要:这篇文章主要介绍了学习java一定要知道的垃圾收集器,垃圾收集器的发展路线,简单来说是随着内存越来越大而发生变化,更多相关介绍需要的朋友可以参考一下
2022-04-28 17:17:32 
摘要:这篇文章主要为大家详细介绍了Android Studio实现帧动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部