程序计数器(线程私有):当前线程所执行的字节码的行号指示器,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各线程之间计数器互不影响,独立存储
虚拟机栈(线程私有):虚拟机栈为虚拟机执行 Java 方法 (也就是字节码)服务
本地方法栈(线程私有):本地方法栈则为虚拟机使用到的 Native 方法服务
堆(线程共享):Java 虚拟机所管理的内存中最大的一块,也是垃圾回收器管理的主要区域。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里分配内存
方法区(线程共享):被当做堆的一个逻辑部分,它用以存储被虚拟机加载的类信息,常量,静态变量。jdk1.8之后方法区被取代了,取而代之的是元空间
(被static声明的成员变量保存在方法区,属于线程共享区域。)
运行时的常量池在jdk1.7之前放在方法区中,在jdk1.7之后在堆中开辟了一块区域存放