它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。
在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致。
任何时间一个线程都只有一一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在执行的Java方法的JVM指令地址;或者,如果是在执行native方法,则是未指定值(undefned)。
它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。
CPU不停的切换线程执行,当切换回来的的时候需要通过线程的PC寄存器知道该从哪里继续执行当前线程。
JVM的字节码解释器需要通过修改PC寄存器的值来明确下一步该执行的指令。
上面说了PC寄存器的所占内存很小,速度很快,作用也很单一。在PC寄存器是不会有OOM或者GC的。