JMM如何屏蔽不同处理器的内存模型差异
各种内存模型关系
- 理想模型:顺序一致性内存模型
- 处理器级模型:TSO、PSO、TMO
- 语言级模型:
C++11 MM
JMM
CLR2.0 MM
Sequentail Consistency
JMM的内存可见性保证
- JMM保证单线程程序。不会出现内存可见性问题。编译器和处理器共同保证单线程程序的执行结果和顺序一致性模型中结果一致
- JMM保证正确同步的多线程程序具有和顺序一致性模型下执行相同的结果
- JMM给未正确同步的多线程程序以最小保障(就是不会读到莫名奇妙的值)
JSR-133内存模型修补
- 增强volatile的内存语义
- 增强final的内存语义