主要有java栈(虚拟机栈), 堆 ,方法区。

线程私有:

   栈: 每个方法执行的时候 都会同时创建一个栈桢 Stack Frame 用于存储  局部变量表, 操作数栈,动态链接, 方法出口等信息

线程共享:

   方法区: 主要存储 静态变量,类信息,常量池 ( 符号引用,字面量)  、即时编译后的代码等数据

   堆 :主要存储绝大多数的对象实例

-----------------------------------------

java内存模型

主内存和工作内存两种

多线程之间共享的实例变量,所有工作内存中的变量均是主内存变量的副本,与其他线程工作内存中的变量互不可见。

volatile变量能够保证其他线程能够实时拿到当前线程修改后的最新值。