Java 的内存模型(JMM)介绍
JMM 核心定义和作用
Java 内存模型(Java Memory Model,JMM)是 Java 虚拟机规范中定义的一种抽象概念,它规定了多线程环境下,线程如何与内存进行交互。
JMM 的核心作用:
- 定义程序中各个变量的访问规则
- 确保多线程程序的可见性、有序性和原子性
- 屏蔽不同硬件平台和操作系统的内存访问差异
JVM 和 JMM 的区别
说到 JMM,我们不得不提到它经常被人所搞混淆的另一个概念 JVM,我们用一张表来直观表现出它们的区别。
JVM 内存结构 | Java 内存模型 | |
| 核心关注点 | 数据存储的物理/逻辑分区 | 线程与内存的交互规则 |
| 内容 | 堆、栈、方法区等内存区域 | 主内存、工作内存抽象概念 |
| 目的 | 内存分配与管理 | 多线程内存可见性控制 |
JMM 核心概念
主内存和工作内存
- 主内存:所有线程共享的内存区域,存储所有实例字段、静态字段和数组元素
- 工作内存:每个线程私有的内存空间,存储线程使用变量的副本
当某个线程需要使用到内存中的变量时,他会先从主内存中复制一份该变量的副本到自己的工作内存当中,使用完后再将该变量写入主内存的共享内存中。

内存间的交互操作
- lock/unlock:作用于主内存,标识变量为线程独占状态
- read/load:从主内存读取变量到工作内存
- use/assign:工作内存中使用和赋值操作
- store/write:将工作内存变量写回主内存
内存三大特性
原子性
核心概念:原子性指一个操作或一系列操作要么全部执行成功,要么全部不执行,不会出现执行到一半的状态。
// 原子操作示例
int x = 10; // 原子的:一次性赋值
boolean flag = ;
;
i++;


