程序计数器
每个线程一块,指向当前线程正在运行的字节码的行号,本地方法则为null
-
指向当前线程所执行的字节码的行号指示器
-
唯一一个在java虚拟机规范中没有规定任何OOM情况的区域
Java虚拟机栈
每个线程对应一个Java虚拟机栈,每个被调用的方法都会创建一个栈帧并入栈,完成调用则出栈
-
虚拟机是使用局部变量表完成参数值到参数变量列表的传递过程的,如果是实例方法(非static),那么局部变量表的第0位索引 的Slot默认是用于传递方法所属对象实例的引用,在方法中通过this 访问
本地方法栈
与虚拟机栈类似,保存的是本地方法
堆(运行时数据区)
用于存放对象实例,几乎全部的对象实例和数组都放在堆中,1.7之后字符串常量池从永久代中剥离出来,放在元空间中。
<