简单介绍
JVM内存模式指的是JVM的内存分区。它是一组规范,需要各个JVM的实现来遵守JMM规范,它屏蔽了各种硬件和操作系统的内存访问差异,以实现Java程序在各个平台下都能达到一致的内存访问效果。
主要功能
它的主要目的是解决由于多线程通过共享内存进行通信时,存在的本地内存数据不一致、编译器会对代码重排序、处理器会对代码乱序执行等带来的问题。可以保证并发编程场景中的原子性、可见性和有序性。
它有利于开发者可以利用这些规范,更方便地开发多线程程序。如果没有这样的JMM内存模型来规范,那么很可能经过了不同JVM的不同规则的重排序之后,导致不同的虚拟机上运行的结果不一样。
硬件层面
数据一致性问题
缓存行对齐
在L2层级缓存是cpu内部的,每个内核对应不同的L2缓存。当一个变量被加载到2个不同的L2缓存时。当A内核去修改变量后,B内核就会产生参数不一致问题。
那么两个L2之前如何数据同步?
乱序执行问题
在多线程的情况下会产生乱序执行。