Java内存模型(一)
Java内存模型(JMM)的设计是建立在物理机的内存模型之上的,因此,了解物理机的内存模型的相关知识是很有必要的。
物理机内存模型
-
内存的读写效率已经远不及CPU的计算效率,为了避免计算资源浪费,有了缓存的概念,也就是每个CPU通过缓存对内存进行访问。
-
现代CPU发展达到瓶颈,单核计算频率已经很难提高了,因此引入了多核CPU。
一、问题的出现:
缓存中存储数据,意味着相同的数据在不同的缓存中会呈现不一致的表现。出现这个问题的原因是写操作还有就是我们采用了多个缓存。
二、缓存一致性协议:
为解决缓存不一致的问题,我们需要一种机制来约束各个核,也就是缓存一致性协议。
常用的缓存一致性协议都属于“snooping(窥探)”协议,各个CPU能够时刻监控自己和其他CPU的状态,从而统一管理协调。其中窥探的思想是:CPU的各个缓存是独立的,但内存确实共享的,所有缓存的数据最终都通过总线写入同一个内存,因此CPU各个CPU都能"看见"总线,各个缓存不仅在进行内存数据交换的时候访问总线,还可以时刻"窥探"总线,监控其他缓存在干什么。因此当一个缓存在对内存写数据时,