JVM之PC寄存器

返回主博客

返回上层

 

PC寄存器(程序计数器)

  1. 以Register命名,原自CPU的寄存器,是对物理寄存器的抽象模拟,寄存器存储指令相关的现场信息。
  2. PC寄存器用来指向下一行需要执行的指令,由执行引擎读取下一条指令。
  3. 任何线程在当前时间只有一个方法在执行,就是当前方法,PC寄存器会存储当前线程正在执行的方法的JVM指令地址。但是如果是正在执行native方法,则是未指定的值undefined。
  4. 他是程序控制流的指示器,分支,循环,跳转,异常,线程恢复等基础功能都需要依赖他,
  5. 字节码解释工作时,就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。
  6. JVM中唯一一个没有溢出的区域。

 

 

 

两个常见问题:

使用PC寄存器存储字节码指令地址有什么用?

为什么使用PC寄存器当前线程的执行地址?

  1. 因为CPU需要不停的切换各个线程,切换回来,我得知道从哪开始继续执行,所以需要PC寄存器来记录。
  2. JVM的解释器就是改变PC寄存器的值来明确下一条该执行哪一条字节码指令。
  3. 其实java线程是映射到本地线程的,本地如何切换,java是交给操作系统的(线程的切换按道理就应该交给操作系统,线程之前如何切换,java并不管,他是C语言基础上的)。这样实现起来就很方便,JVM只需要为每个线程都配置一个PC寄存器的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值