并发编程(3)-多线程的内存布局
PC 寄存器(Program Counter Register):每一个线程都有自己的 PC 寄存器
Java 虚拟机栈(Java Virtual Machine Stack):每一个线程都有自己的 Java 虚拟机栈
理解:栈是先进后出;若不使每个线程都有各自的Java 虚拟机栈,那么在返回及排列上就有问题了,因为线程会抢进来执行产生冲突
例:static void main1(){ test1();}static void test1(){}static void main2(){ test2();}static void test2(){ }//如果无各自的Java 虚拟机栈的话便会如下发布发生乱套// test2()// test1()// main2() *抢进来了*// main1()
本地方法栈(Native Method Stack):每一个线程都有自己的本地方法栈
//原因与虚拟机栈基本一样
堆(Heap):多个线程共享堆
方法区(Method Area):多个线程共享方法区