JVM程序计数器的作用是什么?

网上一些文章描述程序结束器:“记录下一条要执行的指令地址”。
但是我最近看的《深入理解JAVA虚拟机》中写道“如果线程正在执行的是一个java方法,这个计数器记录的就是正在执行的虚拟机字节码指令的地址”
所以哪一种说法是对的呢?可以再详细说一下使用程序计数器执行代码的流程吗?
求大佬!

阅读 1.6k
1 个回答

首先在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的
如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址,如果正在执行的是Natvie方法,这个计数器值为空,
因为cpu需要不停的切换各个线程,再次切换回来时,就需要知道接着从哪儿开始继续执行。即JVM的字节码解释器需要通过改变PC寄存器的值来明确下一条应该执行什么样的字节码指令。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题