品易云推流 关闭
文章详情页
文章 > java基础 > java中对象头的用法

java中对象头的用法

java对象头的用法

头像

小妮浅浅

2021-01-09 14:42:302541浏览 · 0收藏 · 0评论

我们在进行锁的使用时,会把它放在对象头上。有些人不理解对象头的意思,其实我们可以把它看成是处理锁的一个工具,主要是负责对锁的功能进行使用。在使用synchronized锁的时候会有所涉及,所以接下来我们就对象头的概念、包含内容,以及对象头使用的实例为大家进行讲解。

1.对象头概念

Hotspot虚拟机的对象头主要包括两部分数据:Mark Word(标记字段)、Klass Pointer(类型指针)。其中Klass Point是是对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例,Mark Word用于存储对象自身的运行时数据,它是实现轻量级锁和偏向锁的关键,

2.对象头包含内容

主要包含了对象的基本信息,比如:

  • 布局

  • GC状态

  • 类型

  • 同步状态

  • (identity) hash code

  • 数组长度 (前提你得是数组)

3.对象头实例

class oopDesc {
  friend class VMStructs;
 private:
  volatile markOop  _mark;
  union _metadata {
    wideKlassOop    _klass;
    narrowOop       _compressed_klass;
  } _metadata;
}

上面代码中的_mark和_metadata其实就是对象头的定义。关于_metadata之前就介绍过,这里不再赘述。由于这个专题主要想介绍和JAVA并发相关的知识,所以本文展开介绍一下_mark,即mark word。

以上就是java中对象头的用法,掌握了对象头的基础用法后,才能对synchronized锁的处理有更好的运用。运行完实例后,相信大家对对象头的用法有了初步的认识。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图