跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 为什么同步代码块升级到轻量级锁,而不是偏向锁了呢
未分類
17 9 月 2020

为什么同步代码块升级到轻量级锁,而不是偏向锁了呢

为什么同步代码块升级到轻量级锁,而不是偏向锁了呢

資深大佬 : git00ll 0

按照如下代码进行测试,理论上同步代码块里应该对对象添加偏向锁,可是为什么从输出上来看,添加的是轻量锁呢

java 版本 1.8.0_192-b12

 public static void test(){   Object o = new Object();   System.out.println(ClassLayout.parseInstance(o).toPrintable());   synchronized (o){    System.out.println(ClassLayout.parseInstance(o).toPrintable());   }   System.out.println(ClassLayout.parseInstance(o).toPrintable());  } 
java.lang.Object object internals:  OFFSET  SIZE   TYPE DESCRIPTION                               VALUE       0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)       4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)       8     4        (object header)                           e5 01 00 f8 (11100101 00000001 00000000 11111000) (-134217243)   java.lang.Object object internals:  OFFSET  SIZE   TYPE DESCRIPTION                               VALUE       0     4        (object header)                           b0 f4 70 01 (10110000 11110100 01110000 00000001) (24179888)       4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)       8     4        (object header)                           e5 01 00 f8 (11100101 00000001 00000000 11111000) (-134217243)   java.lang.Object object internals:  OFFSET  SIZE   TYPE DESCRIPTION                               VALUE       0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)       4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)       8     4        (object header)                           e5 01 00 f8 (11100101 00000001 00000000 11111000) (-134217243)   

大佬有話說 (3)

  • 主 資深大佬 : git00ll

    自问自答一下,是因为 jvm 在加载过程中会暂时禁用偏向锁,所以此处只有轻量级锁。
    可以在调用 test 方法之前,先休眠 5 秒,这样等 jvm 完全加载完成后,偏向锁才能生效,就能看到效果了。

  • 資深大佬 : sagaxu

    JDK15 开始已经默认禁用偏向锁,未来版本会移除这个功能

  • 資深大佬 : HiShan

    别学了,都被弃用了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具