意义
JVM定义内存模型来屏蔽掉各种硬件与操作系统的内存访问差异,一实现让Java程序在各种平台下都能达到一致的访问效果
字典表
- 变量:实例字段静态字段和构成数组对象的元素等,但不包括局部变量和方法参数(线程私有)
- 主内存:就是物理硬件的内存
- 工作内存:每个线程都有一个工作内存,存储了使用的主内存副本拷贝,线程的操作必须在工作内存中执行,然后再返回给主内存
内存间的操作
操作解释
- lock:将变量锁住,在一个时间内只让一条线程使用
- unlock:释放变量锁
- read:线程把变量从主内存读到工作内存
- load:把read读到的内存载入
- use:将变量传给执行引擎使用
- assgin:执行引擎使用变量完成后变量赋值到工作内存
- store:工作内存将变量从工作内存存储到主内存
- write:主内存将工作内存要求store的变量写入
使用规则
- read与load,store与write必须成对出现
- 变量在工作内存改变后必须同步到主内存
- 没有assign的变量不能写回主内存
- 工作内存不能产生新变量,所有变量都必须从主内存中获取
- 主内存对某变量执行lock后会清空工作内存该变量的值
- 对一个变量执行unlock之前,必须先将其同步到主内存
参考《深入理解Java虚拟机》--p365