synchronized的工作原理(三)

本文详细介绍了synchronized的工作原理,包括锁的存储位置、锁分类、加锁解锁过程及JVM的优化策略。讨论了无锁、偏向锁、轻量级锁和重量级锁的转换,并分析了锁优化的目的和手段,如偏向锁和轻量级锁如何减少资源竞争,以及自旋锁和锁消除在提高响应时间和吞吐量上的作用。
摘要由CSDN通过智能技术生成
1. synchronized的锁存储以及锁分类

synchronized的存储位置: 对象MarkWork

  • JVM的ObjectHeader信息

    • MarkWord: hashcode(哈希code) + age(分代年龄age) + biased_lock(偏向锁标志) + lock (锁标志)
    • Class Metadata Address(类元信息地址)
    • Array Length: 如果对象是一个数组类型,则存储数组长度
      在这里插入图片描述
  • MarkWord信息
    在这里插入图片描述

  • JVM中synchronized使用的锁

    • 无锁: 严格意义上应该说是正常对象,包含hashcode + 分代年龄age + 无偏向锁标志 + 锁状态标志
    • 轻量级锁: 栈记录的地址 + 锁状态
    • 监视器锁: 对象/监视器地址 + 锁状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疾风先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值