---
title: Java内存模型
published: 2025-09-13
description: ' Java内存模型 '
image: ''
tags: ['JMM','Java内存模型']
category: 'Java > 面试题'
draft: false 
lang: ''
---


Java内存模型，是Java虚拟机定义的一种规范，用来描述多线程程序中的变量如何在内存中读取数据，何时会把数据写回主内存。

JMM的核心目标是确保多线程环境下的**可见性，有序性和原子性**，从而避免由于硬件和编译器优化带来的不一致问题。
- 可见性：确保一个线程对共享变量的修改，其他线程能够及时看到。关键字 `volatile`是用来保证可见性的，它强制线程每次读写的时候都从主内存中获取最新值。
- 有序性：确保程序执行的顺序符合代码的书写顺序。JMM允许某些指令重排序，来提高性能，但会保证线程内的操作顺序不会被破坏，通过happens-before关系保证跨线程的有序性。
- 原子性：确保操作的不可分割性，要么全部成功，要么全部失败。 例如synchronized关键字能确保方法或者代码块的原子性。


## 参考
JMM 会把内存分为本地内存和主存，每个线程都有它自己的私有化的本地内存，还有个存储共享数据的主存。

![](https://blog.meowrain.cn/api/i/2025/09/13/p26o8x-1.webp)
