date created | date modified |
---|---|
2022-01-25, 19:03:18 |
2022-07-18, 08:00:59 |
- parent :: [[Java 并发编程]]
- siblings:: [[volatile]],[[final 关键字]]
- child::
- refs: 02 | Java内存模型:看Java如何解决可见性和有序性问题-极客时间
- Java 内存模型由 JSR-133 定义(直到 JDK 5 才完善)
- 内存模型:在特定的缓存一致性协议下(比如 [[MESI 缓存一致性协议]]),对真实的内存或高速缓存进行读写访问的过程抽象
- 不同 CPU 架构有不同的内存模型,JVM 通过定义更抽象的内存模型,屏蔽具体硬件和操作系统内存访问差别,实现跨平台
- JMM 是 JVM 规范([[Java 虚拟机规范]])之一,通过定义多项规则按需禁用缓存以及约束编译器的指令重排优化行为(允许编译器优化,但优化后一定要符合 [[Happens-Before]] 规则)。解决 [[并发编程 bug 源头:可见性、原子性、有序性问题|可见性和有序性问题]]
- JMM 规范分为两部分:
- 面向编写并发程序的应用开发人员,核心是 Happens-Before 规则
- 面向 JVM 实现人员