JVM学习笔记7—锁

对象头Mark

Mark Word,对象头的标记,32位
描述对象的hash、锁信息、垃圾回收标记、年龄

偏向锁

大部分情况是没有竞争的,所以可以通过偏向锁提高性能
所谓的偏向,就是偏向,即锁会偏向于当前已经占有锁的线程
如果要对一个线程偏向,则将对象头设置为偏向,并将线程ID写入对象头Mark
当发生竞争时,偏向模式结束

轻量级锁

嵌入在线程栈的锁
普通的锁处理性能不够理想,轻量级锁是一种快速的锁定方法.
给一个对象加锁的过程
-------将对象头的mark指针保存到锁对象中
-------将对象头设置为指向锁的指针(在线程栈中)
如果轻量级锁失败,使用常规锁!在竞争激烈时,轻量级锁不适合

自旋锁

当竞争存在是,如果线程可以很快获得锁,那么就不用挂起线程,让线程做几个空操作(自旋) 适合于同步块很短的情况

三种锁的总结

n不是Java语言层面的锁优化方法
n内置于JVM中的获取锁的优化方法和获取锁的步骤
偏向锁可用会先尝试偏向锁
轻量级锁可用会先尝试轻量级锁
以上都失败,尝试自旋锁
再失败,尝试普通锁,使用OS互斥量在操作系统层挂起


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值