希望文章能给到你启发和灵感~
如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏 支持一下博主吧~
阅读指南
开篇说明
Java的内存模型简称为JMM,他是Java虚拟机JVM在内存中执行java方法以及变量操作的一种规范。简单的来说,就是它定义了Java程序线程的变量在内存中如何去读,如何去写,如何保证数据的可靠性和一致性。
一、内存相关基础了解
1.1 硬件的内存架构
在我们了解内存模型的时候,我需要知道几个概念,首先是计算机的硬件内存架构是什么样的?
上面的图中,我们能看到计算机的硬件内存架构主要由CPU,内存寄存器
,高速缓存
,主内存
组成;高速缓存位于CPU和主存之间,主要是用于存储CPU
近期可能访问的数据和指令
,以加速数据的访问速度
。
对于不同的计算机来讲,高速缓存中会细分出很多等级的缓存(如L1,L2,L3),不同等级访问速度是越来越低的,相对的容量会越来越大;
例如,我们都知道,机械硬盘HDD容量往往能去到很大,但是读写效率相对比较低,而固态硬盘SSD处理速度快并且稳定,但是容量却不会太大,高速缓存中的结构就类似于这种,你的读写越快,你的容量就很做到很大,毕竟有牺牲和取舍,而且本身计算中的资源就是寸土寸金,很宝贵的;
高速缓存的由来:CPU的处理速度和主内存存在很大差异,所以添加了一层高速缓存来实现性能的提升和处理速度;
高速缓存的作用:就是用于快速计算处理,然后最后将数据保存到主内存;
速度上的差异:CPU >CPU register(寄存器ÿ