Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。程序中的变量存储在主内存中,每个线程拥有自己的工作内存并存放变量的拷贝,线程读写自己的工作内存,通过主内存进行变量的交互。JMM就是规定了工作内存和主内存之间变量访问的细节,通过保障原子性、有序性、可见性来实现线程的有效协同和数据的安全。
Java内存结构:运行时数据区分为五大部分,有虚拟机栈、本地方法栈、堆、方法区、程序计数器。其中,虚拟机栈、本地方法栈和程序计数器是线程所特有的,生命周期是与线程同步的。