程序计数器(Program Counter Register)
-
内存中一块较小的内存空间,可以看做当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变程序计数器的值来获取下一条需要执行的字节码指令的。
-
它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基本功能都是要依赖这个计数器完成的。
-
由于Java虚拟机的多线程是由线程轮流切换。分配处理器执行时间来实现的。所以,为了线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各个线程之间互不影响,独立存储。
-
线程执行java方法时,程序计数器记录的是正在执行的虚拟机字节码的指令地址。如果执行的是本地方法,计数器值为空。