运行时数据区
![在这里插入图片描述](https://img-blog.csdnimg.cn/8640e74dde894523891f3d1f54541bdd.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MzY5MzQ3,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/05a65fe2e2c44cea92b4f7f94c7aaccd.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MzY5MzQ3,size_16,color_FFFFFF,t_70#pic_center)
程序计数器
- 存储指向下一条指令的地址,由执行引擎读取下一条指令
- PC计数器不是广义上的物理寄存器
- 每一个线程都有一份
- 存储当前线程正在执行的Java方法的JVM指令地址,如果执行的是native方法,则未指定(undefined)
- 字节码解释器通过改变计数器的值来选取下一条需要执行的字节码指令
- 唯一一个在JVM规范中没有规定任何OutOfMemoryError情况的区域
其他
CPU不停地切换线程,需要记录线程执行的位置,JVM字节解释器需要通过改变计数器的值来选取下一条需要执行的字节码指令
为了能准确记录各个线程正在执行的当前字节码指令地址,