1. 线程私有
1.1. 程序计数器-pc 寄存器
每个jvm线程都有?己的pc 计数器
线程执?到的字节码的行号指示器,只要不是native方法, ?于执行过程中的循环、跳转、分?支、异常处理理线程恢复等。
?命周期与线程相同
1.2. 虚拟机栈- stack
描述的是?法执行的内存模型,?法的执行过程就是虚拟机栈的入栈与出栈
用于存储局部变量和部分过程结果(些尚未算好的结果)的数据结构。
也被用来处理动态链接、方法返回值和异常分派。
生命周期与JVM线程相同,?法执?时都会创建?个栈帧。
随着?法调?而创建,随着方法结束(?论正常还是异常完成)而销毁。
局部变量表和操作数栈都是在编译期确定,在方法的code属性中。
1.2.1. 局部变量表
存放在编译时已经确定的8种基本类型、对象引用等。空间?小是确定的,
在运行期间不会改变。
?法参数和局部变量
局部变量 没有 初始化阶段,即不会被赋零值。
1.2.2.操作数栈
类似于数据寄存器
方法开始执行时是空的, 运算过程中会有出栈入栈操作。
1.3. 本地方法栈?
用来?持native?法执?
native关键字说明其修的?法是一个原?态方法,方法对应的实现不是在当前文件,?是在?其他语?(如C和C++)实现的文件中
2. 线程共享
2.1. 方法区