首页 > 技术文章 > 程序寄存器

tang321 2021-04-23 11:00 原文

程序寄存器(Program Counter Register)

JVM中的 PC寄存器是对物理PC寄存器的一种抽象模拟
JVM规范中,每个线程都有自己的程序计数器,它是线程私有的,生命周期与线程的生命周期保持一致
任何时间一个线程只有一个方法在执行,也就是当前方法。程序计数器会存储当前线程正在执行的Java方法的JVM指令地址;如果是在执行native方法,则是未指定值(undefined)
字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令
它是一块很小的内存空间,几乎可以忽略不计,也是运行速度最快的存储区域

CPU需要不停地切换各个线程,这时候切换回来以后,就得知道从哪开始继续执行,所以需要PC寄存器
作用:PC寄存器用来存储指向下一条指令(将要执行的指令)的地址,由执行引擎读取下一条指令

 

PC寄存器为什么要设为线程私有?
所谓的多线程在一个特定的时间段内只会执行其中某一个线程的方法,CPU会不停地切换,这样必然导致频繁的中断和恢复。为了能够准确地记录各个线程正在执行的当前字节码指令地址,最好的办法是为每一个线程都分配一个PC寄存器

推荐阅读