二、2.2运行时数据区 -- 程序计数器PC

运行时数据区 – 程序计数器PC


学习渠道:尚硅谷

1.理解

我们可以将程序计数器(Program Counter Register)理解为pc计数器、指令计数器、代码行号指示器或者程序钩子。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。

2.特性

1) 占据一块很小内存空间,通常是线程私有,运行速度快
2)生命周期同线程的生命周期保持一致
3)通常我们的程序是复杂的,且代码长度常进行封装,因此,一个线程中往往有多个方法,,每个时刻只有一个方法在执行(PC指向的当前方法),此时就需要进行方法的跳转,因此,当前的PC地址会被存储,方便方法正常结束后再执行正常逻辑==[从而方便程序进行各种跳转而不会出现失误]==
4)如果在执行native方法,那么PC将是未指定值(undefined)

  • 这里的“pc寄存器”是在抽象的JVM层面上的概念——当执行Java方法时,这个抽象的“pc寄存器”存的是Java字节码的地址。实现上可能有两种形式,一种是相对该方法字节码开始处的偏移量,叫做bytecode index,简称bci;另一种是该Java字节码指令在内存里的地址,叫做bytecode pointer,简称bcp。对native方法而言,它的方法体并不是由Java字节码构成的,自然无法应用上述的“Java字节码地址”的概念。所以JVM规范规定,如果当前执行的方法是native的,那么pc寄存器的值未定义——是什么值都可以。
  • Java线程总是需要以某种形式映射到OS线程上。映射模型可以是1:1(原生线程模型)、n:1(绿色线程 / 用户态线程模型)、m:n(混合模型)。以HotSpot VM的实现为例,它目前在大多数平台上都使用1:1模型,也就是每个Java线程都直接映射到一个OS线程上执行。
  • 作者:RednaxelaFX 链接->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值