PC寄存器
JVM中的PC寄存器是对物理PC寄存器的的一种抽象模拟。用来存储指向下一条指令的地址,也是即将要执行的指令代码。由执行引擎读取下一条指令。
占用内存很小,运行速度最快。线程私有。
唯一一个没有OOM的区域。
![](https://img-blog.csdnimg.cn/f0a0e98183d644338f89258e521bde90.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
1.PC寄存器为什么会被设定为线程私有?
cpu会不停地做任务切换,这样必然导致经常中断和恢复。为了能够准确地记录各个线程正在执行的当前字节码指令地址,所以为每个线程都分配一个PC寄存器。
2.使用PC寄存器存储字节码指定地址有什么用?
CPU需要不停地切换各个线程,切换回来后,需要知道从哪继续执行。
3.为什么使用PC寄存器记录当前线程的执行地址?
JVM字节码解释器需要通过改变PC寄存器的值来明确下一条应该执行什么样的字节码指令。