JVM内存模型和JMM(Java内存模型)的异同小结

 2019-12-10 16:20  阅读(1386)
文章分类:Java Core

1、JVM内存模型和JMM(Java内存模型)不是一回事,JMM来源于JSR-133:memory_model-1_0-pfd-spec.pdf.

JMM的目的是为了解决Java多线程对共享数据的读写一致性问题,通过Happens-Before语义定义了Java程序对数据的访问规则,修正之前由于读写冲突导致的Cache数据不一致的问题。具体到Hotspot VM的实现,主要是由OrderAccess类定义的一些列的读写屏障来实现JMM的语义。

JVM内存模型则是指JVM的内存分区。

2、Java内存模型和操作系统内存模型的关系

![李拔飞 > JVM内存模型和JMM(Java内存模型)的异同小结 > Bridging The Gap Between The Java Memory Model And The Hardware Memory Architecture.png” width=”500″ src=”http://ddrvcn.oss-cn-hangzhou.aliyuncs.com/2019/3/RZveyq.png”>

![李拔飞 > JVM内存模型和JMM(Java内存模型)的异同小结 > JVM.png” src=”http://ddrvcn.oss-cn-hangzhou.aliyuncs.com/2019/3/7JNbMz.png”>

4、对于JMM和JVM本身的内存模型,这两者本身没有关系。如果一定要勉强对应,则从变量,主内存,工作内存的定义来看,主内存主要是对应于Java堆中的对象实例数据部分,而工作内存则对应于虚拟机栈中的部分区域。从更低层次上说,主内存就是物理内存,而为了获取更好的执行速度,虚拟机(甚至是硬件系统本身的优化措施)可能会让工作内存优先存储于寄存器和高速缓存中,因为运行时主要访问–读写的是工作内存。

更多深入了解文档:

http://www.infoq.com/cn/profile/程晓明

https://www.cnblogs.com/chihirotan/p/6486436.html

https://blog.csdn.net/sc313121000/article/details/40266531

https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html

http://tutorials.jenkov.com/java-concurrency/java-memory-model.html

https://blog.csdn.net/u012152619/article/details/46968883

https://www.jianshu.com/p/743f5abd3383?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

https://www.jianshu.com/p/bf158fbb2432

https://www.jianshu.com/p/e0e80d004a86?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

[_ JVM_JMMJava Bridging The Gap Between The Java Memory Model And The Hardware Memory Architecture.png width500 src_http_ddrvcn.oss-cn-hangzhou.aliyuncs.com_2019_3_RZveyq.png_p_p style]:

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> JVM内存模型和JMM(Java内存模型)的异同小结

相关推荐