Java内存模型

钟明宏 4月前 ⋅ 51 阅读

JVM规范定义了Java内存模型(Java Memory Model)来屏蔽掉各种操作系统、虚拟机实现厂商和硬件的内存访问差异

1. 工作内存和主内存

Jvm内存模型规定所有的变量都存储在主内存(JVM内存的一部分),每个线程都有自己的独立工作内存,它保存了被该线程使用的变量的主内存复制,线程对这些变量的操作都在自己的工作内存中心进行

2. Java内存交互协议

Java内存模型定义了8种操作来完成主内存和工作内存的变量访问

  • lock: 主内存变量,把一个变量标识为某个线程独占的状态
  • unlock: 主内存量,把一个处于锁定状态变量释放出来,被释放后的变量才可以被其他线程锁定
  • read: 主内存变量,把一个变量的值从主内存传输到线程的工作内存中,一遍随后的load动作使用
  • load: 工作内存变量,把read读取到的主内存中的变量值放入到工作内存的变量副本中
  • use: 工作内存变量,把工作内存中变量的值传递给Java虚拟机执行引擎,每当虚拟机遇到一个需要使用到变量值的字节码指令时,将会执行该操作
  • assign: 工作内存变量,把从执行引擎接收到的变量的值赋值给工作变量,每当虚拟机遇到一个给变量赋值的字节码时,将会执行该操作
  • store: 总过内存变量,把工作内存中的一个变量的值传送到主内存中,一遍随后的write操作使用
  • write: 主内存变量,把store操作从工作内存中得到的变量的值放入主内存的变量中

全部评论: 0

    我有话说: