美文网首页
Java内存模型

Java内存模型

作者: 肚皮怪_Sun | 来源:发表于2018-05-18 14:54 被阅读0次

计算机处理器与内存交互,如读取数据、存储数据。但由于计算机的存储设备和处理器的运算速度有个几个数量级的差距,所以计算机系统不得不加一层读写速度尽可能接近处理器运算速度的高速缓存作为内存与处理器之间的缓冲。将运算需要使用的数据复制到缓冲中,让运算能快速进行,当运算速度结束后再从缓存同步回内存之中,这样处理器就无须等待缓慢的内存读写。

基于这个情况它又带了一个新的问题就是:缓存一致性。在多个处理器都有自己的高速缓存,而又同步到主内存中,这样就有可能导致数据的不一致。为了解决一致性的问题产生了一系列的缓冲一致性协议。而内存模型可以理解为在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。

Java内存模型

Java虚拟机自己也定义了一种的Java内存模型,以实现 让Java程序在各个平台下都能达到一致的内存访问效果。
主内存与工作内存
Java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程在工作内存中保存了该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不是直接读写主内存的变量,不同的线程之间也无法直接访问对方的工作内存中的变量,线程之间的变量值通过主内存传递。下图是三者关系的交互示意图

内存间交互操作
关于主内存与工作内存之间具体的交互协议,Java内存模型定义了一下8种操作来完成
lock(锁定)、unlock(解锁)、read(读取)、load(载入)、use(使用)、assign(复制)、store(存储)、write(写入)

image.png

相关文章

网友评论

      本文标题:Java内存模型

      本文链接:https://www.haomeiwen.com/subject/pnbwdftx.html