java内存模型详解(JMM)

来源:互联网 发布:淘宝网显示不正常 编辑:程序博客网 时间:2024/06/06 21:44

做 java 相关开发的,必须了解 JMM(java内存模型),(面试很喜欢问)。



一。 硬件内存模型


物理机硬件的内存模型:
这里写图片描述

冯诺依曼体系结构核心思想是:“存储程序,程序控制”,,那么硬件至少需要有两个东西,程序就是控制器即软件控制
(1)内存 (存储)
(2)处理器(控制)


但是,普通存储器读写速度比较慢(此处指的是持久存储且能大量存储,目前硬盘属于,廉价通用的存储器)
为了协调CPU处理速度,和普通存储器读写速度比较慢,在处理器和主存之间加上了高速缓存。

高速缓存出要使用RAM

SRAM : 静态RAM,不用刷新,速度可以非常快,像CPU内部的cache,都是静态RAM,缺点是一个内存单元需要的晶体管数量多,因而价格昂贵,容量不大。
DRAM: 动态RAM,需要刷新,容量大。 (内存条)
SDRAM :同步动态RAM,需要刷新,速度较快,容量大。 (内存条)

以上便是有关硬件物理内存模型的介绍



二。java内存模型

为什么先介绍,物理内存模型,那是有原因的,java内存模型是对物理内存模型的一个抽象。
这里写图片描述


(1)主内存,相当于物理机的磁盘,用于存储大量数据。
(2)java线程,相当于物理机的cpu,用于处理数据
(3)工作内存,相当于物理机的高速缓存,线程私有,提高线程执行效率



三。注意事项

java内存模型只是抽象出来的,一种数据结构而已,,与物理内存的对应关系在实际运行中,主内存和工作内存可能都处于物理机的主存中。

原创粉丝点击