zoukankan      html  css  js  c++  java
  • Java对象头和锁

    几种锁的类型

    ⼀个对象有四种锁状态,它们级别由低到⾼依次是:

    1. ⽆锁状态
    2. 偏向锁状态:适⽤于只有⼀个线程访问同步块场景。
    3. 轻量级锁状态:追求响应时间。同步块执⾏速度⾮常快。
    4. 重量级锁状态:重量级锁依赖于操作系统的互斥量实现,操作系统中线程状态转换需要相对比较长的时间,所以重量级锁效率低,但被阻塞的线程不会消耗CPU,追求吞吐量。同步块执⾏速度较⻓。

    ⼏种锁会随着竞争情况逐渐升级,锁的升级很容易发⽣,但是锁降级发⽣的条件会⽐较苛刻,锁降级发⽣在Stop The World期间,当JVM进⼊安全点的时候,会检查是否有闲置的锁,然后进⾏降级。


    对象头

    Java的锁都是基于对象的,对象的锁信息放在对象头中。

    每个Java对象都有对象头。如果是⾮数组类型,则⽤2个字宽来存储对象头,如果是数组,则会⽤3个字宽来存储对象头。

    在32位处理器中,⼀个字宽是32位;在64位虚拟机中,⼀个字宽是64位。对象头的内容如下:

    Mark Word(运行时元数据)的内容如下:


    参考资料

    本文参考于这里

  • 相关阅读:
    GC(垃圾分代收集)
    排序算法总结
    Redis中的数据结构
    事务的隔离性(续篇)
    手写Spring mvc框架 (二)
    MySql日志与事务的隔离级别
    手写Spring mvc框架 (一)
    IO流
    随笔三(Ajax)
    关于博主noble_
  • 原文地址:https://www.cnblogs.com/swifthao/p/13731002.html
Copyright © 2011-2022 走看看