JMM
属于
语
言
级
的内存模型,它确保在不同的
编译
器和不同的
处
理器平台之上,通
过
禁
止特定
类
型的
编译
器重排序和
处
理器重排序,
为
程序
员
提供一致的内存可
见
性保
证
。
Java
线
程之
间
的通信由
Java
内存模型(本文
简
称
为
JMM
)控制,
JMM
决定一个
线
程
对
共享
变
量的写入何
时对
另一个
线
程可
见
。从抽象的角度来看,
JMM
定
义
了
线
程和主内存之
间
的抽
象关系:
线
程之
间
的共享
变
量存
储
在主内存(
Main Memory
)中,每个
线
程都有一个私有的本地
内存(
Local Memory
),本地内存中存
储
了
该线
程以
读
/
写共享
变
量的副本。本地内存是
JMM
的
一个抽象概念,并不真
实
存在。它涵盖了
缓
存、写
缓
冲区、寄存器以及其他的硬件和
编译
器
优
化