JMM
2021-03-29 18:59:15 0 举报
JMM,java内存模型
作者其他创作
大纲/内容
当当前线程改变副本的值得时候才会刷新到主内存中,所以当前线程中的数据对其他线程不可见,而且别的线程刷新了该值本线程也不会去主内存中重新获取
CPU
Menory
1、a=1 2、把a清除
工作内存(变量副本)
主内存
Save
Cache
Protocol
1、a = 1 2、a=2
刷新到主内存
3
让别的线程的拷贝值无效,线程每次用到a都从主存中取
volatile:保证了可见性和有序性
1、a = 12、a=2
Load
2
Thread
JMM:jmm中的主内存、工作内存与jvm中的Java堆、栈、方法区等并不是同一个层次的内存划分,这两者基本上是没有关系的,如果两者一定要勉强对应起来,那从变量、主内存、工作内存的定义来看,主内存主要对应于Java堆中的对象实例数据部分,而工作内存则对应于虚拟机栈中的部分区域。
1、当对volatile变量执行写操作后,JMM会把工作内存中的最新变量值强制刷新到主内存2、写操作会导致其他线程中的缓存无效
处理器寄存器的读写速度要比内存的速度快好几个数量级,为了解决速度不匹配的问题在内存和处理器中间加入了高速缓存,但也带来了读写不一致的问题
所有变量都存储在主内存中,每个线程都有自己的工作内存,工作内存为高速缓存或者寄存器中,保存了要使用的变量的副本。
1
把a改成2
0 条评论
下一页