首页 > 编程语言 > 详细

Java内存模型

时间:2021-04-27 20:17:11      阅读:25      评论:0      收藏:0      [点我收藏+]

1.硬件的效率和一致性

技术分享图片

 

   众所周知,处理器的运算速度和存储设备的运算效率相差几个数量级,处理器的运算速度比存储设备的运算效率高得多,为了缓解这种矛盾,Q1引入了高速缓存作为缓冲,但是这样还是有问题,什么问题呢?多个处理器都拥有自己的高速缓存,但它们又共享同一块主存,比如多个处理器操作了主存上的同一块数据,这个时候就有问题了到底谁是对的。这个时候又引入了Q2缓存一致性协议(具体有哪些可自行百度)。Q3处理器乱序执行代码,然后将结果重组保证结果正确性。类似的Java的内存访问方式和硬件的缓存访问操作很类似。相应的java即时编译器也有类似结果从组的指令重排序。

2.Java内存模型

技术分享图片

 

   规则:

  • 所有的变量都存储在主内存中,每条线程还有自己的工作内存(可以与前面将的处理器的高速缓存类比),线程的工作内存中保存了该线程使用到的变量到主内存副本拷贝
  • 线程对变量的所有操作(读取、赋值)都必须在工作内存中进行,而不能直接读写主内存中的变量。
  • 不同线程之间无法直接访问对方工作内存中的变量,线程间变量值的传递均需要在主内存来完成。

3.Java内存间相互操作

  为了解决内存一致性,Java内存模型定义了8大操作来完成工作内存到主内存以及主内存到工作内存的内存操作:

 

Java内存模型

原文:https://www.cnblogs.com/silencelp/p/14709656.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!