java内存模型的目的
屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能到达一致的内存访问效果。
主要目标
定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量与java中的变量有所不同。它包括实例字段、静态字段和构成数组对象的元素,但不包括局部变量和方法参数。
java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来)。线程对变量的所有操作(读取、赋值)都必须在工作内存中进行。不同线程之间无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成。