- Java内存区域与Java内存模型的区别
1)Java内存区域
方法区:类,常量,static变量
堆:JVM启动的时候,存放Java实例对象
VM stack:存放栈帧(方法)
栈帧存放的有:局部变量,基本的数据类型的变量,引用类型的地址
程序计数器:线程的私有数据,用来记载下一跳指令的地址
本地方法栈:Native
2)Java内存模型
Java Memory model JMM抽象的概念
a.从主存中赋值数据到工作空间
b.线程操作工作空间中的数据
c.刷新主存中的数据
- 硬件内存架构与Java内存模型
1.硬件内存模型
2.Java线程与硬件处理器
Java线程与硬件内存的架构关系
Java内存模型存在的必要性
解决Java线程的不安全性
- Java内存模型对并发特征的保证
-Java并发编程的三个重要特性
原子性:不可分割的
有序性:次序,Java代码中的次序 CPU中执行的次序
可见性:线程内部的私有数据对其他的线程是不可见的
JMM对三大特征的保证
A JMM与原子性:简单的读写操作具有原子性
x=10;原子性 写
y=x;(线程x读到工作空间,x的值写入到y的空间,在主存中刷新y的值)
i++;
z=z+1;
简单的赋值操作是具有原子性的