首页 > 科技 >

这样看java内存模型其实很简单

2018-09-14 19:09:40 网络整理 阅读:63 评论:0

java内存模型,简称JMM(Java Memory Model), 个人对于JMM理解是:JVM屏蔽了操作系统对于物理内存访问的复杂性,目的从软件设计角度呈现出的一种内存访问的逻辑视图 。也就是JMM是JVM为软件工程师提供的一系列内存访问的逻辑规则,理解并合理使用这些规则就能正确访问内存,至于底层和物理内存直接交互动作已经被透明化了,无须关心。下图是JMM内存模型视图,是内存访问规则的基础。

这样看java内存模型其实很简单

主内存 : 主内存是 线程公有的 ,是所有线程都能访问的内存区域, 一般对应于java内存布局中的堆区。

工作内存 工作内存是 线程私有的 。一般对应于JVM虚拟机栈,以及本地方法栈

工作内存和主内存之分

从逻辑上看,如果没有主内存和工作内存的区分,只有一整块的内存,似乎也并无不妥。 那么区分主内存和工作内存的意义何在?

这样看java内存模型其实很简单

上图是耳熟能详的冯诺依曼体系结构,现代计算机是基于冯诺依曼体系上发展起来的。该体系有两个关键的组成就是 存储器和CPU(运算器和控制器) 。 其中存储器则是我们所讨论的物理内存。 CPU和内存之间的IO操作是存在瓶颈的,内存的操作速度远远小于CPU的运算速度 。在CPU和内存协同工作的场景中,CPU以较短的时间完成数值计算后,需要花较长的时间等待内存读取操作,造成了CPU运算资源的浪费。 于是,位于CPU和内存之间的高速缓存应运而生。

相关文章