第一篇(2):Java内存模型
2023-09-27 14:19:46 时间
前言
上一篇我们介绍了在并发编程里面导致bug的三种问题,可见性问题,原子性问题,有序性问题。针对这三个问题,Java语言提供了Java内存模型(JMM)来解决这三种问题,主要是针对有序性和可见性问题。其本质上就是按需禁用缓存和编译优化。接下来我们就详细的阐述下。
Java内存模型介绍
Java 内存模型是一个很复杂的规范,本质上可以理解为:Java内存模型规范了JVM如何提供按需禁用缓存和编译优化(本质上是指令重排序)的方法。具体来说,这些方法包括:通过volatile,synchronized,final 还有Happen-Before规则来控制。下面我就详细介绍下。
Happen-Before 的本质上表示的意思是,先行发生,本质上表示的意思是 前面的操作产生的结果对后续操作可见。例如:A先行发生于B,那么执行B操作是,A操作产生的数据B操作一定能看到。
程序次序规则
程序次序规则:程序前面对某个变量的修改对后续操作一定是可见的
例如:
public void writer() {
相关文章
- 使用jvisualvm.exe工具查看java项目内存溢出(堆溢出)--制造内存溢出
- Java Jvm虚拟机的内存模型概述 《对Java的分析总结》(一)
- Java内存溢出OOM使用Mat分析
- 什么是 Java 内存模型?
- Java内存模型
- 深入理解Java内存模型(七)——总结
- 深入理解Java内存模型(六)——final
- 深入理解java内存模型系列文章
- 深入理解Java内存模型(二)——重排序
- Java使用ConcurrentHashMap实现简单的内存式缓存
- java线上排查OOM内存溢出
- JVM中java实例对象在内存中的布局
- Java 线程内存模型
- Java并发编程(十四)Java内存模型
- Tomcat运行Java Web内存溢出总结
- Java内存模型深度解析:final--转
- Java内存模型深度解析:顺序一致性--转
- 深入理解Java内存模型--转载