0%

程序计数器

程序计数器

程序计数器(Program Counter Register)是用来存储当前线程指向下一条指令的地址,也就是即将要执行的指令代码,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完成。每个线程都有自己的一个程序计数器,程序计数器的生命周期与线程的一致,在任何时间同一个线程只会执行一个方法,也就是当前方法,程序计数器会存储当前线程正在执行方法的JVM指令地址,如果执行的是native方法,在指令地址是undefined

程序计数器是JVM规范中唯一一个不会出现OOM的区域,且也不存在垃圾回收

可以看做是当前线程执行字节码的行号指示器,通过程序计数器来选取下一条需要执行的字节码指令

为什么需要有程序计数器

由于CPU是在不停的进行线程切换的,而在切换到当前线程的时候需要知道从哪开始执行,JVM的字节码解释器就是通过改变程序计数器的值来明确下一条指令该执行哪个字节码指令。每条线程都需要一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,其为线程私有的内存。

欢迎关注我的其它发布渠道