当前位置:网站首页>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寄存器的值来明确下一条应该执行什么样的字节码指令。
边栏推荐
- 说说js中使用for in遍历数组存在的bug
- 2022年牛客多校第四场补题
- Srping bean in the life cycle
- Induction jian hai JustFE 2022/07/29 team, I learned the efficient development summary (years)
- 05-SDRAM: Arbitration
- NIO编程
- curl (7) Failed connect to localhost8080; Connection refused
- 图像基本操作的其他内容
- mysql中添加字段的相关问题
- "By sharing" northwestern university life service | | bytes a second interview on three sides by HR
猜你喜欢
随机推荐
我三本学历,五面阿里,被面试官“供”着出来了,拿了33*15的Offer
MySQL row locks and gap locks
matlab simulink 粒子群优化模糊pid控制的电机泵
牛客刷SQL---2
小白的0基础教程SQL: 关系数据库概述 02
Dialogue with the father of MySQL: One excellent programmer is worth 5 ordinary programmers
太厉害了,终于有人能把文件上传漏洞讲的明明白白了
对于升级go1.18的goland问题
曲柄滑块机构运动分析和参数优化
Does flinkcdc have any solution for mysql's date field type conversion?
【FiddlerScript】利用FiddlerScript抓包保利威下载
CSP-S2019兴奋不已
NIO programming
weight distribution
从零开始—仿牛客网讨论社区项目(一)
Offer brush questions - 1
return;代表含义
Srping bean in the life cycle
实战演练 Navicat 中英文模式切换
WebSocket implements chat function