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

Java内存模型

时间:2017-10-20 20:13:24      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:处理器   问题   http   完成   lock   过程   ges   值传递   logs   

硬件设备

  处理器的运算速度很快,但是处理器又要和内存打交道,读取运算数据、存储运算结果的过程很缓慢,此时需要一个高速缓存,运算时将数据复制到缓存中,运算完成后将结果同步会内存,处理器无需等待内存读写加快速度。但是会产生缓存一致性问题,需要依赖一定的协议。“内存模型”可以理解为在特定的协议下,对特定的内存或高速缓存进行读写访问的过程抽象。 

  技术分享

Java内存模型

主内存和工作内存

  所有的变量都存储在主内存中(与硬件主内存类比,线程共享,主要对应Java堆中的实例数据)。每条线程都有自己的工作内存(与硬件高速缓存类比,线程不共享,主要对应虚拟机栈中的部分数据),线程的工作内存保存了该线程使用到的变量的主内存副本拷贝,线程对变量的操作(读写、赋值)都在工作内存中进行,不能直接操作主内存的变量,不同线程之间不能互相访问对方工作内存中的变量,只能通过主内存来访问。

  技术分享

主内存与工作内存之间的交互操作

  lock(锁定):作用于主内存的变量,将主内存中的一个变量标志为一条线程独占状态。

  unlock(解锁):作用于主内存的变量,将标识为线程独占状态的变量释放出啦,之后才能被其他线程 lock。

  read(读取):作用于主内存的变量,将一个变量的值传输到工作内存中,以便 load 操作。

  load(载入):作用于工作内存的变量,把 read 操作得到的变量值放入到变量副本中。

  use(使用):作用于工作内存的变量,将变量的值传递给执行引擎,虚拟机遇到使用变量的值的字节码指令时执行该操作。

  assign(赋值):作用于工作内存的变量,把从执行引擎获得的值赋值给工作内存的变量,虚拟机遇到给变量赋值的字节码指令时执行该操作。

  store(存储):作用于工作内存的变量,将变量传送到主内存中,以便 write 操作。

  write(写入):作用于主内存的变量,把 store 操作得到的变量值放入到主内存的变量中。

 

Java内存模型

标签:处理器   问题   http   完成   lock   过程   ges   值传递   logs   

原文地址:http://www.cnblogs.com/BINGJJFLY/p/7700845.html

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