码迷,mamicode.com
首页 > 编程语言 > 详细

Java内存模型

时间:2018-08-12 12:11:13      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:内存   有一个   没有   执行   引擎   read   使用   bubuko   就是   

意义

JVM定义内存模型来屏蔽掉各种硬件与操作系统的内存访问差异,一实现让Java程序在各种平台下都能达到一致的访问效果

 

字典表

  • 变量:实例字段静态字段和构成数组对象的元素等,但不包括局部变量和方法参数(线程私有)
  • 主内存:就是物理硬件的内存
  • 工作内存:每个线程都有一个工作内存,存储了使用的主内存副本拷贝,线程的操作必须在工作内存中执行,然后再返回给主内存

 

内存间的操作

 技术分享图片

操作解释

  1. lock:将变量锁住,在一个时间内只让一条线程使用
  2. unlock:释放变量锁
  3. read:线程把变量从主内存读到工作内存
  4. load:把read读到的内存载入
  5. use:将变量传给执行引擎使用
  6. assgin:执行引擎使用变量完成后变量赋值到工作内存
  7. store:工作内存将变量从工作内存存储到主内存
  8. write:主内存将工作内存要求store的变量写入

 

使用规则

  • read与load,store与write必须成对出现
  • 变量在工作内存改变后必须同步到主内存
  • 没有assign的变量不能写回主内存
  • 工作内存不能产生新变量,所有变量都必须从主内存中获取
  • 主内存对某变量执行lock后会清空工作内存该变量的值
  • 对一个变量执行unlock之前,必须先将其同步到主内存

 参考《深入理解Java虚拟机》--p365

Java内存模型

标签:内存   有一个   没有   执行   引擎   read   使用   bubuko   就是   

原文地址:https://www.cnblogs.com/ming-szu/p/9462000.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!