JVM-程序计数器02
Java虚拟机内存管理
方法区:
二、程序计数器
1.程序计数器的解释:
程序计数器(Program Counter Register)是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。
------ 摘自《深入理解JAVA虚拟机》
2.特点
- 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器
- 程序计数器处于处于线程独占区
- 如果线程执行的是Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址。如果在执行的是native方法,这个计数器的值为undefined
- 此区域唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError(内存溢出)情况区域
- 线程私有
二、Java虚拟机栈
- 虚拟机栈描述的是Java方法执行的动态内存模型
- 栈帧
- 每个方法执行都会创建一个栈帧,伴随着方法从创建到执行完成。用于存储局部变量表,操作数栈,动态链接,方法出口等。
- 局部变量表
- 存放编译期可知的各种基本数据类型,引用类型,returnAddress类型
- 局部变量表的内存空间在编译期完成分配,当进入一个方法时,这个方法需要在帧中分配多少内存是固定的,在方法运行期间是不会改变局部变量表的大小
- 大小