锁优化


垃圾回收会导致上下文切换

很多 JVM 垃圾回收器(serial 收集器、ParNew 收集器)在回收旧对象时,会产生内存碎片,从而需要进行内存整理,在这个过程中就需要移动存活的对象。而移动内存对象就意味着这些对象所在的内存地址会发生变化,因此在移动对象前需要暂停线程,在移动完成后需要再次唤醒该线程。因此减少 JVM 垃圾回收的频率可以有效地减少上下文切换。

Executors.newCachedThreadPool,只适合处理大量且耗时短的非阻塞任务。

竞争锁优化

1.减少锁的持有时间

同步的代码要尽量少。

2.降低锁的粒度

锁分离(读写锁);锁分段。

3.非阻塞乐观锁替代竞争锁

cas 代替 sync。


文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
多线程 多线程
状态线程主要有“新建”(NEW)、“就绪”(RUNNABLE)、“运行”(RUNNING)、“阻塞”(BLOCKED)、“死亡”(DEAD)五种状态。****多处理器,处理器提供了总线锁定和缓存锁定两个机制来保证复杂内存操作的原子性。当处理
2020-09-04 future
下一篇 
gc 调优 gc 调优
GC 调优策略1. 降低 Minor GC 频率由于新生代空间较小,Eden 区很快被填满,就会导致频繁 Minor GC,因此我们可以通过增大新生代空间来降低 Minor GC 的频率。 单次 Minor GC 时间更多取决于 GC 后存
2020-09-04 future
  目录