当前位置:网站首页>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寄存器的值来明确下一条应该执行什么样的字节码指令。
边栏推荐
猜你喜欢
NIO编程
零代码网站开发利器:WordPress
Introduction to the basic principles, implementation and problem solving of crawler
MATLAB程序设计与应用 2.5 MATLAB运算
响应式织梦模板园林花卉类网站
WebSocket实现聊天功能
Flip letters using string container
湖仓一体电商项目(一):项目背景和架构介绍
从购买服务器到网站搭建成功保姆级教程~超详细
Datagrip error "The specified database userpassword combination is rejected..."Solutions
随机推荐
matplotlib pyplot
安装SQL Server详细教程
声音信号处理基频检测和时频分析
Srping bean in the life cycle
mysql中添加字段的相关问题
NUMPY
【FiddlerScript】利用FiddlerScript抓包保利威下载
第5章——以程序方式处理MySQL数据表的数据
Talk about the bugs in using for in to traverse the array in js
WebSocket实现聊天功能
MVVM project development (commodity management system 1)
mysql的行锁和间隙锁
爬虫基本原理介绍、实现以及问题解决
2022杭电多校第二场1011 DOS Card(线段树)
R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:gtExtras包的pad_fn函数与gt::fmt函数一起用于填充包含数值的特定列、对数据列的数值进行十进制对齐(从小数点对齐)
MATLAB程序设计与应用 2.5 MATLAB运算
从底层结构开始学习FPGA(6)----分布式RAM(DRAM,Distributed RAM)
Three aspects of Ali: How to solve the problem of MQ message loss, duplication and backlog?
JS的运行原理
How JS works