• 技术文章 >java >java基础

    java中对象头的用法

    小妮浅浅小妮浅浅2021-01-09 14:42:30原创2798

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

    1.对象头概念

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

    2.对象头包含内容

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

    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锁的处理有更好的运用。运行完实例后,相信大家对对象头的用法有了初步的认识。

    专题推荐:java对象头的用法
    上一篇:synchronized在java的优缺点 下一篇:对象头在java中的结构有哪几种

    相关文章推荐

    • synchronized在java中的修饰• synchronized在java中的原理分析• synchronized在java的优缺点

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网