当前位置:网站首页>JVM内存和垃圾回收-04.程序计数器(PC寄存器)
JVM内存和垃圾回收-04.程序计数器(PC寄存器)
2022-08-02 18:40:00 【J___code】
1.PC寄存器
- 存储指向下一条指令的地址,由执行引擎根据PC寄存器读取下一条指令。下图中一个栈帧相当于一个方法,假设当前栈帧的局部变量表地址为1,操作数栈为2,PC寄存器就是存储该地址:
- 它是很小的内存空间,也是运行速度最快的存储区域
- 因为每个线程都有自己的PC寄存器,所以它的生命周期和线程的一致
- 任何时间一个线程只能有一个方法在执行(即当前方法)。PC寄存器会存储当前方法的JVM指令地址;如果是执行本地方法,则为未指定值(因为PC寄存器是Java层面的寄存器)
- 它是程序控制流的指示器,比如循环、线程恢复等都依赖它
- 字节码解释器工作时通过改变它的值来选取下一条需要执行的字节码指令
tips:
- 寄存器存储指令相关的现场信息,CPU只有把数据装载到寄存器才能运行
- JVM的PC寄存器是对物理PC寄存器的抽象模拟
- PC寄存器是唯一在JVM中没有GC和OOM的(虚拟机栈或本地方法栈没有GC但有可能溢出,方法区和堆也可能溢出)
2.举例说明
- 假设Java程序代码如下:
public static void main(String[] args) { int i = 10; int j = 20; int k = i + j; } 将其进行反编译后:
3.常见问题
使用PC寄存器存储字节码指令地址的作用?
JVM字节码解释器需要通过改变PC寄存器的值明确下一条该执行什么字节码指令
为什么使用PC寄存器记录当前线程的执行地址?
因为CPU需要不停的切换线程,切换回来后需要知道从哪里继续执行
PC寄存器为什么被设定为线程私有?
因为CPU会不停在多个线程中做任务切换,为了能够准确记录各个线程正在执行的当前字节码指令地址,所以为每个线程分配一个PC寄存器,这样每个线程可以独立计算,避免线程间相互干扰的情况
边栏推荐
- 备战无人机配送:互联网派To C、技术派To B
- [论文分享] VideoFlow: A Flow-Based Generative Model for Video
- 1.0.0到1.0.2的底层数据库表的更新,需要再重新自建数据库吗?
- Win11主题下载一直转圈怎么办?Win11主题下载一直转圈的解决方法
- 回收站删除的文件怎么恢复,2个方法汇总助您快速解决
- 情景剧《重走长征路》上演
- How to deal with security risks posed by machine identities
- 洛谷P2345 MooFest G
- selenium安装和环境配置Firefox
- 淘宝|蚂蚁|菜鸟|盒马|嘀嘀|饿了么面经(已拿多个offer)
猜你喜欢

TSF微服务治理实战系列(一)——治理蓝图

What are the useful real-time network traffic monitoring software

荐号 | 当一个人不联系你,不拉黑你,原因只有一个……!

What is the use of IT assets management software

AtomicInteger详解

Sentienl【动态数据源架构设计理念与改造实践】

What skills are the most practical for college students in communications?

连续三次 | 灵雀云入选Gartner中国ICT技术成熟度曲线报告

Mppt光伏最大功率点跟踪控制matlab仿真

sed 命令
随机推荐
Openharmony - 基于ArkUI(TS)开发颜色选择器
有哪些好用的实时网络流量监控软件
Go----Go 语言快速体验之开发环境搭建及第一个项目HelloWord
监控易火星版即将亮相:分布式运维帮助TOP3000大企业跨越管理鸿沟
深度学习-学习笔记(持续更新)
小姐姐面试蚂蚁金服被虐经历,心疼...
音频隐写一
What are the useful real-time network traffic monitoring software
LSB利器-zsteg
麦聪DaaS平台 3.7.0 Release 正式发布:全面支持国际化
leetcode:622. 设计循环队列【循环队列板子】
cache2go-源码阅读
EasyCVR平台通过国标GB28181接入柯达NVR显示注册失败,该如何解决?
电子行业库存管理痛点与WMS仓储管理系统解决方案
[论文分享] VideoFlow: A Flow-Based Generative Model for Video
CWE4.8:2022年危害最大的25种软件安全问题
AtomicInteger详解
手机银行体验性测试:如何获取用户真实感受
Monitor is easy to Mars debut: distributed operations help TOP3000 across management gap
【C语言刷题】Leetcode203——移除链表元素

