首页 > 其他分享 >锁调优

锁调优

时间:2023-02-05 00:23:16浏览次数:31  
标签:读锁 开启 XX 调优 线程 偏向

锁调优主要从以下五个方面入手

  • 减少锁的持有时间 
  • 减小锁的粒度
  • 锁粗化
  • 锁分离
    • 读写分离
    • 操作分离
  • 无锁(CAS)

 

  ReentrantLock上了写锁后,持有锁的线程可以继续加读锁,之后再释放写锁,从而完成 从写锁降级为读锁 的锁降级过程。

  在读多写少的情况下ReentrantLock可以换为ReentrantReadWriteLock。

  但在读操作远大于写操作,导致 写“饥饿” 的问题时可以采用StampedLock,它将读锁分为了悲观读和乐观读。悲观读则和ReentrantReadWriteLock读锁一致,乐观读则采用了CAS操作,即有线程读时其他线程依然可以上写锁。

 

补充:

synchronized优化机制

  • 锁分级
  • 锁消除
  • 锁粗化

  相关参数(理解相关原理即可,实际过程中使用较少)

参数 作用
-XX:+UseBiasedLocking 开启偏向锁
-XX:BiasedLockingStartupDelay 启动后多久开启偏向锁
-XX:+UseHeavyMonitors 禁用偏向锁
-XX:+DoEscapeAnalysis 开启逃逸分析
-XX:-EliminateLocks 开启锁消除

 

标签:读锁,开启,XX,调优,线程,偏向
From: https://www.cnblogs.com/shan218/p/17092698.html

相关文章

  • 线程池调优
    线程池调优主要包括两方面线程数调优BlockingQueue调优线程数调优一般根据任务类型进行调优。增删改查类任务一般属于IO密集型任务,但大部分任务都属于混合型任务......
  • ClickHouse SQL调优及执行计划分析
    ClickHouse在做SQL查询时要尽量遵循的原则1.大表在左,小表在右,否则会造成右表加载数据量太大,大量消耗内存资源;2.如果join的右表为大表,则需要将右表写成子查询,在子查询中将......
  • jvm调优
    一、jvm内存调优主要的目的是减小GC的频率和FullGC的次数。1.FullGC会对整个堆进行整理,包括Young、Tenured和Perm。FullGC由于须要对整个堆进行回收,因此比较慢,所以应......
  • jvm内存调优
    一、jvm内存调优主要的目的是减小GC的频率和FullGC的次数。1.FullGC会对整个堆进行整理,包括Young、Tenured和Perm。FullGC由于须要对整个堆进行回收,因此比较慢,所以应......
  • 《MySQL高级篇》十、数据库其他调优策略
    文章目录​​1.数据库调优的措施​​​​1.1调优的目标​​​​1.2如何定位调优问题​​​​1.3调优的维度和步骤​​​​第1步:选择适合的DBMS​​​​第2步:优化表设计​......
  • Nginx调优总结-第六部分编译优化与简单测试
    第六部分编译优化Nginx可以自行编译,所以里面可以设置多个编译策略.也可以自行修改源码,便于比如进行ip_hash的全IP地址验证.也可以修改nginx的版本号等信息,避免内......
  • 精华推荐 | 【JVM深层系列】「GC底层调优系列」一文带你彻底加强夯实底层原理之GC垃圾
    前提介绍很多小伙伴,都跟我反馈,说自己总是对JVM这一块的学习和认识不够扎实也不够成熟,因为JVM的一些特性以及运作机制总是混淆以及不确定,导致面试和工作实战中出现了很多的纰......
  • 【Java应用服务体系】「序章入门」全方位盘点和总结调优技术专题指南
    专题⽬标本系列专题的目标是希望可以帮助读者们系统和全访问掌握应⽤系统调优的思路与方案以及相关的调优工具的使用,虽然未必会覆盖目前的所有的问题场景,但是还是提供了较......
  • 30 个Elasticsearch调优最佳实践!
    ES发布时带有的默认值,可为es的开箱即用带来很好的体验。全文搜索、高亮、聚合、索引文档等功能无需用户修改即可使用,当你更清楚的知道你想如何使用es后,你可以作很多的......
  • 90%开发都会忽略的性能调优点:针对返回大数据量的接口,10分钟内找到提升带宽瓶颈的突破
    01问题现象前几天小编居家远程办公,在测试环境访问某返回3.4M数据的接口,响应速度远不如预期。一开始怀疑是用远程用vpn连接访问导致的。但回到公司之后,我再次通过内网多次访......