Java 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分。
Java 运行时数据区域
程序计数器(Program Counter Register)
存放指令位置,
虚拟机的运行,类似于这样的循环:
while(not end){
1.取PC中的位置,找到对应位置的指令;
2.执行该指令;
3.pc++;
}
Java虚拟机栈(Java Virtual Machine Stacks)
Java虚拟机栈 里面是一个一个的栈帧(Stack frame), 每个方法在执行的同时都会创建一个栈帧(Stack frame)
栈帧 包括:
1.局部变量表(Local Variable Table)
2.操作数栈(Operand Stack)
3.动态链接(Dynamic linking)
4. (return address)
本地方法栈(Native Method Stack)
Java堆(Heap)
Java堆(Heap)是Java虚拟机所管理的内存中最大的一块,它被所有线程共享的,在虚拟机启动时创建。
** 方法区(Method Area)**
方法区(Method Area)与Java堆一样,是各个线程共享的内存区域
总结:每个线程都要自己的 计数器、VMS(Java虚拟机栈)、NMS(本地方法栈), 而 Java堆(Heap)和方法区(Method Area)是各个线程共享的



