最近学习JVM对程序计数器有所疑问?
程序计数器是否用来记录操作数栈执行到哪一步?
JVM计数器用于存储下一条指令的地址。详细的说PC寄存器是用来存储指向下一条指令的地址,也就是即将将要执行的指令代码。由执行引擎读取下一条指令。
即Java源代码不能直接去被执行,他得经过一次编译,编译成二进制字节码,里面的一行一行的东西都是JVM指令,Java虚拟机跨平台的基础就是这些JVM指令,这些指令在所有平台都是一致的。但这些指令也不能直接交给CPU执行,他必须要经过一个解释器,这个解释器也是Java虚拟机执行引擎的一个组件,他就专门负责把每一条JVM指令(比如getstatic)解释成为机器码,机器码就可以交给CPU执行。
详细参考JVM 程序计数器_Purine King的博客-CSDN博客_jvm程序计数器
官网有指出 https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5.1
程序计数器其实是用来记录线程当前任务的进度,在并发环境多线程抢占CPU资源的情况下,所有的线程都需要等待CPU调度才能执行,当线程处于等待的时候,将当前的任务进度记录下来,等待CPU调度后就继续执行之前的任务