第四章:程序计数器

JVM中的程序计数器(Program Counter Register)中,Register的命名源于CPU的寄存器。

注意,这里并非指的是物理寄存器,JVM中的PC寄存器是对物理PC寄存器的一种模拟抽象。

PC寄存器用来存储指向下一条指令的地址,即将要执行的指令代码。由执行引擎读取下一条指令。


PC寄存器没有GC,也没有OOM。
以一个实际java代码反编译出的字节码为例说明:

关于PC寄存器的两个常见面试问题:
① 使用PC寄存器存储字节码指令地址有什么用?为什么使用PC寄存器记录当前线程的执行地址?

② PC寄存器为什么会被设定为线程私有?
不同线程当前执行到的位置是不一样的。为了能够准确地记录各个线程正在执行的当前字节码指令地址,最好的办法自然是为每一个线程都分配一个PC寄存器。

posted @ 2020-05-26 15:26  scnb  阅读(80)  评论(0)    收藏  举报