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(运行时元数据)的内容如下:


    参考资料

    本文参考于这里

  • 相关阅读:
    DapperExtensions 使用教程
    C#事件订阅及触发例子
    01、类与结构的区别
    内网信息搜集
    Anydesk拿下远程桌面
    C++对注册表的操作
    Linux下常见流编辑器的使用
    Typecho1.1反序列化漏洞复现
    Nmap脚本编写
    Github学习
  • 原文地址:https://www.cnblogs.com/swifthao/p/13731002.html
Copyright © 2011-2022 走看看