Day325.程序计数器(PC寄存器) -JVM

Posted 阿昌喜欢吃黄桃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day325.程序计数器(PC寄存器) -JVM相关的知识,希望对你有一定的参考价值。

程序计数器(PC寄存器)

PCprogram counter 程序寄存器

一、PC Register介绍

  • 每一个线程拥有一份PC寄存器

  • 可理解为:集合的迭代器、游标

  • PC寄存器没有垃圾回收,他只是记录下一个执行的地址的,不断被替换

  • 他不会出现OOM(OutOfMemoryError)

  • 不存在GC,也不出现OOM

image-20210711201503313

  • 作用

由程序计数器来记录执行完上一行代码后,下一个该执行谁了?

一个栈祯对应一个方法

PC寄存器相当于下一条指令的标识,记录的行号

执行引擎根据PC寄存器里面的地址,去取下一条指令来执行,执行完就再去PC寄存器里面再取,再执行

image-20210711202332035

image-20210711202451535image-20210711202634126

二、举例说明

  • 代码如下

image-20210711204303376

  • 反编译后的结果

image-20210711204236843

三、两个常见问题

主要是CPU会不断的切换线程,若切换回来后如果没有组件记录程序执行到哪了,那他就不知道如何执行了!所以通过PC程序寄存器来记录当前线程执行指令的偏移地址(也就是位置),当CPU切换还这个线程执行指令的时候,就可以知道这个线程此时执行到哪里了

-------------有点像CPU为每个线程分别对应记录的小本本

image-20210711204618365


CPU会很频繁的切换执行的线程,以为太快了,所以感觉是同时进行;

通过PC寄存器记录执行的当前执行指令的偏移地址,好让CPU切换回来后知道这个线程此时执行到哪了

所以用来记录每一个线程所对应执行的指令的偏移地址,所以要保证线程私有,每一个线程具有一个

image-20210711205321202

image-20210711205259146

以上是关于Day325.程序计数器(PC寄存器) -JVM的主要内容,如果未能解决你的问题,请参考以下文章

JVM程序计数器PC寄存器

JVM虚拟机详解程序计数器(PC寄存器)PC Register

JVM虚拟机详解程序计数器(PC寄存器)PC Register

JVM虚拟机详解程序计数器(PC寄存器)PC Register

一文理解JVM的程序计数器(PC)

JVM内存结构——运行时数据区