1 定义
全称:Program Counter Register 程序计数器(寄存器)
(1)一块较小的内存空间,它的作用是当前线程所执行的字节码行号指示器(记录下一条jvm指令的执行地址)
(2)一个处理器只会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器(线程私有)
(3)唯一一个在jvm中没有规定任何OutOfMemoryError的区域
2 作用
记住下一条JVM指令的执行地址。
- 执行步骤:java源码不能直接执行,必须经过编译后转换为二进制字节码,二进制字节码是一些jvm的指令,jvm指令不能直接提交给CPU进行执行,需要通过一个解释器转换为机器码,再提交给CPU进行执行。
- 程序计数器在其中的作用:程序计数器位于二进制字节码和解释器之间,用于记录下一条jvm指令的执行地址。解释器每次转换为机器码的同时会把下一条jvm指令的地址放入到程序计数器中,如此循环,知道转换完成。
3 实现
寄存器(整个CPU组件里读取速度最快的单元)
4.特点
- 是线程私有的
- 在多个线程执行的时候,CPU会给各个线程分配时间片,在一个时间片内,如果线程一没有执行完,则会保存他的状态,执行线程二
- 线程一在一个时间片执行完后,会将执行到的指令下一条地址保存在程序计数器中,该程序计数器只是属于线程一的
- 线程一再一次抢到时间片,则可以将程序计数器中的地址取出,继续向下运行
2.不会存在内存溢出
3.每个线程都有自己的程序计数器