Day325.程序计数器(PC寄存器) -JVM
Posted 阿昌喜欢吃黄桃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day325.程序计数器(PC寄存器) -JVM相关的知识,希望对你有一定的参考价值。
程序计数器(PC寄存器)
PC: program counter 程序寄存器
一、PC Register介绍
-
每一个线程拥有一份PC寄存器
-
可理解为:集合的迭代器、游标
-
PC寄存器没有垃圾回收,他只是记录下一个执行的地址的,不断被替换
-
他不会出现OOM(OutOfMemoryError)
-
不存在GC,也不出现OOM
- 作用
由程序计数器来记录:执行完上一行代码后,下一个该执行谁了?
一个栈祯对应一个方法
PC寄存器相当于下一条指令的标识,记录的行号
执行引擎根据PC寄存器里面的地址,去取下一条指令来执行,执行完就再去PC寄存器里面再取,再执行
二、举例说明
- 代码如下:
- 反编译后的结果:
三、两个常见问题
主要是CPU会不断的切换线程,若切换回来后如果没有组件记录程序执行到哪了,那他就不知道如何执行了!所以通过PC程序寄存器来记录当前线程执行指令的偏移地址(也就是位置),当CPU切换还这个线程执行指令的时候,就可以知道这个线程此时执行到哪里了
-------------有点像CPU为每个线程分别对应记录的小本本
CPU会很频繁的切换执行的线程,以为太快了,所以感觉是同时进行;
通过PC寄存器记录执行的当前执行指令的偏移地址,好让CPU切换回来后知道这个线程此时执行到哪了
所以用来记录每一个线程所对应执行的指令的偏移地址,所以要保证线程私有,每一个线程具有一个
以上是关于Day325.程序计数器(PC寄存器) -JVM的主要内容,如果未能解决你的问题,请参考以下文章
JVM虚拟机详解程序计数器(PC寄存器)PC Register
JVM虚拟机详解程序计数器(PC寄存器)PC Register