对象的成员如何表示 java,对象的组合java

  对象的成员如何表示 java,对象的组合java

  如何解决写爬虫IP受阻的问题?立即使用。

  前言:

  所谓对象,其实就是java类生成的实体。

  比如building的图纸是Java类,根据这个图纸可以看到和使用的实际建筑就相当于使用这个图纸得到的对象。

  Java类其实是一个抽象概念,object是这个Java类的抽象概念物化后的一个具体概念。

  在热点虚拟机中,也就是我们常见的虚拟机。对象组合分为三个区域:对象头、实例数据和对齐填充。

  对象标题

  对象头分为两部分:对象本身的运行时数据和类型指针。

  对象本身在运行时的数据,比如:HashCode、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳、GC生成年龄等。在32位和64位虚拟机下(如果压缩指针未打开),该数据的长度分别为32位和64位。这部分叫做‘标记词’。

  而标记字被设计成没有固定的数据结构,以便在较小的空间内存储更多的信息。它会根据不同的状态存储不同的数据。例如,在32位的情况下,存储内容的变化如下

  类型指针,也就是指向这个对象的类元数据的指针,是为了知道这个对象是哪个类实例,但是并不是所有的虚拟机实现都用这个来寻找类元数据。

  和HotSpot虚拟机一样,我们都知道当一个对象被新创建时,它存储了对象的引用,引用存储了对象实例的地址。一些虚拟机意识到这个引用存储了一个对象的句柄地址,而句柄地址又包含了对象实例的地址和对象类型的地址。

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

  (学习视频分享:java视频教程)

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

  示例数据

  实例是真正存储对象的数据区域,以及各种字段的内容。

  对齐

  这部分没有别的意思,只是充当占位符,主要是因为HotSpot虚拟机的内存管理要求对象的大小必须是8字节的整数倍,对象头正好是8字节的整数倍,但实例数据不一定,需要对齐、填充、完成。

  作者:yes的拉平策略

  链接:https://juejin.cn/post/6844903827427033096

  来源:掘金

  推荐:java面试问答。以上是对java对象组成的详细介绍。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: