当前位置: 首页 > news >正文

浙江疫情最新消息今天封城了手机网站优化排名

浙江疫情最新消息今天封城了,手机网站优化排名,比较好的网站建设,杨浦区公司网站建设Java 对象(Object 实例)结构包括三部分:对象头、对象体、对齐字节。 Object的三个部分 对象头包括三个字段,第一个字段叫做 Mark Word(标记字),用于存储自身运行时的数据 例如 GC 标志位、哈希码、锁状态等信息。 第二个字段叫做 Class Pointer(类对象…

Java 对象(Object 实例)结构包括三部分:对象头、对象体、对齐字节。

Object的三个部分 

对象头包括三个字段,第一个字段叫做 Mark Word(标记字),用于存储自身运行时的数据 例如 GC 标志位、哈希码、锁状态等信息。

第二个字段叫做 Class Pointer(类对象指针),用于存放方法区 Class 对象的地址,虚拟机通过这个指针来确定这个对象是哪个类的实例。

第二个字段叫做 Array Length(数组长度)。如果对象是一个 Java 数组,那么此字段必须有, 用于记录数组长度的数据;如果对象不是一个 Java 数组,那么此字段不存在,所以这是一个可选字段。

对象体包含了对象的实例变量(成员变量)。用于成员属性值,包括父类的成员属性值。这部分内存按 4 字节对齐。

对齐字节也叫做填充对齐,其作用是用来保证 Java 对象在所占内存字节数为 8 的倍数(8N bytes)。HotSpot VM 的内存管理要求对象起始地址必须是 8 字节的整数倍。对象头本身是 8 的倍数,当对象的实例变量数据不是 8 的倍数,便需要填充数据来保证 8 字节的对齐。

对象结构中的核心字段

  • Mark Word(标记字)字段主要用来表示对象的线程锁状态,另外还可以用来配合 GC、 存放该对象的 hashCode。

  • Class Pointer(类对象指针)字段是一个指向方法区中 Class 信息的指针,意味着该对象可随时知道自己是哪个 Class 的实例。

  • Array Length(数组长度)字段也占用 32 位(在 32 位 JVM 中)的字节,这是可选的, 只有当本对象是一个数组对象时才会有这个部分。

  • 对象体用于保存对象属性值,是对象的主体部分,占用的内存空间大小取决于对象的属性数量和类型。

  • 对齐字节并不是必然存在的,也没有特别的含义,它仅仅起着占位符的作用。当对象实例数据部分没有对齐(8 字节的整数倍)时,就需要通过对齐填充来补全。

对象结构中的字段长度

Mark Word、Class Pointer、Array Length 等字段的长度,都与 JVM 的位数有关。Mark Word 的长度为 JVM 的一个 Word(字)大小,也就是说 32 位 JVM 的 Mark Word 为 32 位,64 位 JVM 为 64 位。Class Pointer(类对象指针)字段的长度也为 JVM 的一个 Word(字)大小,即 32 位的 JVM为32位,64位的JVM为64位。

所以,在 32 位 JVM 虚拟机中,Mark Word 和 Class Pointer 这两部分都是 32 位的;在 64 位 JVM 虚拟机中,Mark Word 和 Class Pointer 这两部分都是 64 位的。

对于对象指针而言,如果 JVM 中对象数量过多,使用 64 位的指针将浪费大量内存,通过简单统计,64 位的 JVM 将会比 32 位的 JVM 多耗费 50%的内存。为了节约内存可以使用选项 +UseCompressedOops 开启指针压缩。选项 UseCompressedOops 中的 Oop 部分为 Ordinary object pointer 普通对象指针的缩写。

如果开启 UseCompressedOops 选项,以下类型的指针将从 64 位压缩至 32 位:

  • Class 对象的属性指针(即静态变量)

  • Object 对象的属性指针(即成员变量)

  • 普通对象数组的元素指针

当然,也不是所有的指针都会压缩,一些特殊类型的指针不会压缩,比如指向 PermGen(永久代)的 Class 对象指针(JDK8 中指向元空间的 Class 对象指针)、本地变量、堆栈元素、入参、返回值和 NULL 指针等。

如果对象是一个数组,那么对象头还需要有额外的空间用于存储数组的长度(Array Length 字段)。Array Length 字段的长度也随着 JVM 架构的不同而不同:32 位的 JVM 上,长度为 32 位; 64 位 JVM 则为 64 位。64 位 JVM 如果开启了 Oop 对象的指针压缩,Array Length 字段的长度也将由64位压缩至32位。

Mark Word的结构信息

Java 内置锁的涉及到很多重要信息,这些都存放在对象结构中,并且是存放于对象头的 Mark Word 字段中。Mark Word 的位长度为 JVM 的一个 Word 大小,也就是说 32 位 JVM 的 Mark word 为 32 位,64 位 JVM 为 64 位。Mark Word 的位长度不会受到 Oop 对象指针压缩选项的影响。

Java 内置锁的状态总共有四种,级别由低到高依次为:无锁,偏向锁,轻量级锁,重量级锁。

其实在 JDK1.6 之前,Java 内置锁还是一个重量级锁,是一个效率比较低下的锁,在 JDK1.6 之 后,JVM 为了提高锁的获取与释放效率,对 synchronized 的实现进行了优化,引入了偏向锁、轻 量级锁的实现,从此以后 Java 内置锁的状态就有了四种(无锁、偏向锁、轻量级锁、重量级锁), 并且四种状态会随着竞争的情况逐渐升级,而且是不可逆的过程,即不可降级,也就是说只能进 行锁升级(从低级别到高级别)。

64位锁结构信息

lock:锁状态标记位

占 2 个二进制位,由于希望用尽可能少的二进制位表示尽可能多 的信息,所以设置了 lock 标记。该标记的值不同,整个 Mark Word 表示的含义不同。

biased_lock

对象是否启用偏向锁标记,只占 1 个二进制位。为 1 时表示对象启用偏向锁,为 0 时表示对象没有偏向锁。

lock 和 biased_lock 两个标记位组合在一起,共同表示 Object 实例处于什么样的锁状态。二者组合的含义如下:

age

4位的 Java 对象分代年龄。在 GC 中,如果对象在 Survivor 区复制一次,年龄增加 1。当对象达到设定的阈值时,将会晋升到老年代。默认情况下,并行 GC 的年龄阈值为 15,并发 GC 的年龄阈值为 6。由于 age 只有 4 位,所以最大值为 15,这就是-XX:MaxTenuringThreshold 选 项最大值为 15 的原因。

identity_hashcode

31 位的对象标识 HashCode(哈希码),采用延迟加载技术,当调用 Object.hashCode()方法或者 System.identityHashCode() 方法计算对象的 HashCode 后,其结果将 被写到该对象头中。当对象被锁定时,该值会移动到 Monitor(监视器)中。

thread

54 位的线程 ID 值,为持有偏向锁的线程 ID。

epoch

偏向时间戳。

ptr_to_lock_record

占 62 位,在轻量级锁的状态下,指向栈帧中锁记录的指针。

ptr_to_heavyweight_monitor

占 62 位,在重量级锁的状态下,指向对象监视器 Monitor的指针。

http://www.mnyf.cn/news/48016.html

相关文章:

  • 手工品外贸出口网站建设方案seo经典案例
  • 手机网站设计字体多大广西seo快速排名
  • 做vb程序的网站开发一个平台需要多少钱
  • 长沙美容网站建设sem全称
  • 2018做网站还是app什么是百度快照
  • 做网站设计公司棋牌软件制作开发多少钱
  • 百度上怎么做网站太原搜索引擎优化招聘信息
  • wordpress 做手机站友情链接
  • 日照市做网站广州市口碑seo推广
  • 自己制作网站的方法湖南网站建站系统哪家好
  • 宜昌网站建设0717web抖音seo优化系统招商
  • 爱站工具有加超人下拉系统石家庄网站建设方案推广
  • 微信小程序做网站域名查询入口
  • 页面设计排版网站微信朋友圈营销文案
  • 国家企业信息管理系统新手seo要学多久
  • b站 网站建设上海企业网站推广
  • 做公司展示网站站内推广方式有哪些
  • 怎么做游戏测评视频网站关键词优化公司费用多少
  • 电商网站里的水果图片怎么做的seo技术快速网站排名
  • 网站建设空间一般多大知名网络营销推广
  • 河北住房与城乡建设部网站企业网站注册域名的步骤
  • 实搜石家庄网站建设小程序推广网站多少钱
  • 上海网站建设-网建知识html网页制作代码大全
  • 做音乐头像网站什么是百度搜索推广
  • 移动应用网站开发宁波seo自然优化技术
  • 网站首页的名字通常是网络软文是什么意思
  • 拍宣传片找什么公司宁波品牌网站推广优化
  • wordpress 网站静态百度一下 你就知道首页官网
  • 网站建设90g 吾爱破解抖音seo系统
  • 头像制作网站大连网络营销seo