- 减少锁的粒度
/*将一个锁拆分为多个锁提高并发度例如:LinkedBlockingQueue 入队和出队使用不同的锁 , 相对于LinkedBlockingArray只有一个锁效率要高*/
- 锁粗化
/*多次循环进入同步块不如同步块内多次循环另外 JVM 可能会做如下优化 , 把多次 append 的加锁操作粗化为一次(因为都是对同一个对象加锁 , 没必要重入多次)例如:new StringBuffer().append("a").append("b").append("c");*/
- 锁消除
/*JVM 会进行代码的逃逸分析 , 例如某个加锁对象是方法内局部变量 , 不会被其它线程所访问到 , 这时候就会被即时编译器忽略掉所有同步操作 。*/
- 读写分离
/*CopyOnWriteArrayListConyOnWriteSet*/
结束语到这里我们JVM的内存模型篇就结束了 , 希望能为你带来帮助~附录该文章属于学习内容 , 具体参考B站黑马程序员满老师的JVM完整教程
这里附上视频链接:01-JMM-概述_哔哩哔哩_bilibili
经验总结扩展阅读
- Linux学习环境搭建流程
- Archlinux + Dwm 配置流程
- 关于入门深度学习mnist数据集前向计算的记录
- 四十 Java开发学习----MyBatisPlus入门案例与简介
- jvm双亲委派机制详解
- FHE学习笔记 #2 多项式环
- django-environ学习
- 万字详解JVM,让你一文吃透
- 论文笔记 - GRAD-MATCH: A Gradient Matching Based Data Subset Selection For Efficient Learning
- MFC 学习笔记