先来看这张图,对于数据区,存在着线程,进程的概念。程序计数器是每个线程私有的。如果没有多线程的概念,可以直接无视。
程序计数器
程序计数器,也有人叫它 程序寄存器。但是叫做 程序计数器更为精确。
因为我们知道,在计算机也有一种结构叫做 寄存器,它储存容量小,但是速度快,一般用于 CPU 中。
但是我们这里的 程序计数器 只是我们常说的内存中划分出的一块小内存区域,用来充当 程序计数器的功能。
它记录了,我们下一条要运行指令的地址。
我们来看这张图。
右边是我们从 Java 文件编译出的 class 文件的代码内容,左边是指令偏移地址,右边是要执行的指令。
我们的 程序计数器就保存了 下一条指令要执行地址的位置。
之后,执行引擎会从 程序计数器中,获得指令的地址,拿到操作指令,对其进行执行。
程序计数器 是 当前线程所执行的字节码的行号指示器。
因为只是记录下一条要运行指令的地址,所以占用内存小,而且操作简单,相应的速度也就相对较快。