JAVA内存模型(JMM)与JVM内存模型
1、JAVA内存模型保证了在多线程环境下,对共享变量读写的原子性、可见性和有序性的一系列规范。
2、JVM内存模型规定了JAVA虚拟机在运行时使用的内存的各个分区及其作用。
JAVA内存模型
原子性: 通过 synchronized、lock实现,适用于多写。
可见性: 通过volatile实现,适用于一写多读。
有序性: 通过volatile实现,会插入内存屏障使得volatile声明的变量前后顺序不会发生变化
JVM内存模型
1、内存按功能被大体分为方法区、堆、虚拟机栈,本地方法栈、程序计数器。
2、栈属于线程私有,堆是公有,而且对象和全局变量大部分情况会被分配到
堆上,而堆又是公有,当多个线程同时操作时,结果就会超出预期。