当前位置:网站首页>JVM:运行时数据区-PC寄存器(程序计数器)
JVM:运行时数据区-PC寄存器(程序计数器)
2022-08-01 06:43:00 【谷咕咕】
JVM:运行时数据区
1.什么是pc寄存器:
JVM的pc寄存器也叫程序计数器,是对物理pc寄存器的一种抽象虚拟。
用来存储指向一下条指令的地址,即将要执行的指令代码,由执行引擎读取下一条指令。
2.pc寄存器特点:
每一个线程都有一个pc寄存器,pc寄存器会存储当前线程正在执行的java方法的jvm的指令地址:如果是本地方法就是undefined(本地方法指c或c++的代码)。
3.javap反编译id后的代码,左边的就是指令地址,右边的即为指令代码,pc寄存器存储指令地址,执行引擎去pc寄存器中读取存储指令地址对应的指令代码。
4.程序的分支,循环,跳转,异常的处理,线程恢复,依赖pc寄存器。
字节码解释器工作时,就是通过改变这个计数器的值来迭代,读取下一条要执行的字节码指令。
他是唯一一个,在java虚拟机规范中没有oom情况的区域。
方法区、堆有gc
栈和pc寄存器无gc
pc寄存器的两个问题:(八股文)
pc寄存器存储字节码指令地址有什么用呢?
cpu需要不停的切换线程,线程切换回来之后需要从哪里继续执行,就需要pc寄存器来告知。
为什么使用pc寄存器记录当前线程的执行地址呢?
字节码解释器需要通过改变pc寄存器的值来明确下一条应该执行什么样的字节码指令。
边栏推荐
猜你喜欢

安装SQL Server详细教程

信息系统项目管理师必背核心考点(五十六)配置控制委员会(CCB)的工作

戴尔PowerEdge服务器R450 RAID配置步骤

Using FiddlerScript caught poly FiddlerScript 】 【 download

AspNet.WebApi.Owin custom Token request parameters

Robot growth in China

Datagrip error "The specified database userpassword combination is rejected..."Solutions

leetcode43 string multiplication

Motion analysis and parameter optimization of crank-slider mechanism

How JS works
随机推荐
对话MySQL之父:一个优秀程序员可抵5个普通程序员
爬虫框架 Scrapy 详解
Dart 异常详解
mysql的行锁和间隙锁
戴尔PowerEdge服务器R450 RAID配置步骤
The Bean's life cycle
05-SDRAM:仲裁
第5章——以程序方式处理MySQL数据表的数据
零代码网站开发利器:WordPress
torch
Robot growth in China
Qt Widget 项目对qml的加载实例
LeetCode 0149. Maximum number of points on a line
More than 2022 cattle guest school game 4 yue
WebSocket implements chat function
Qt Widget project loading example of qml
选择排序—直接选择排序和堆排序
【音视频】srs直播平台搭建
从离线到实时对客,湖仓一体释放全量数据价值
史上超强最常用SQL语句大全