程序计数器(PC寄存器 Program Counter Register)

  • pc寄存器并非广义上所指的物理寄存器,JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟
  • 作用:PC寄存器用来存储指向下一条命令的地址,即 将要执行的命令代码,由执行引擎读取下一条指令.
  • 它是一块很小的内存空间,几乎可以忽略不计,也是运行速度最快的存储区域.
  • 在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程生命周期保持一致
  • 任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法,程序计数器会存储线程正在执行的java方法的JVM指令地址,或者,如果是在执行native方法,则是未指定值(undefined)
  • 它是程序控制流的指示器,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这计数器来完成
  • 字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令
  • 它是唯一一个在java虚拟机规范中没有规定任何OutOfMemoryError情况的区域

为什么要使用PC寄存器

  • cpu来回切换不同的各个线程,当切换回来的时候,需要知道当前线程执行到哪了
  • jvm的字节码解释器通过改变pc寄存器的值来明确下一条应该执行的字节码指令

PC寄存器为什么会被设定为线程私有

  • 因为各个线程是交替执行的,整体是随机的,但是每个线程又是有序的,从上至下执行,如果共享同一个pc寄存器,那么整体执行顺序就确定了.

程序计数器(pc寄存器)相关推荐

  1. Java #JVM(HotSpot) 运行时数据区 #程序计数器(PC寄存器)#虚拟机栈(栈帧:局部变量表、操作数栈……)#堆……

    目录 JVM中线程的说明 程序计数器(PC寄存器) 虚拟机栈 · 栈帧 ·· 局部变量表 ·· 操作数栈 ·· 动态链接 ·· 方法返回地址 ·· 本地方法栈 堆 · 查看堆的大小 · 堆的默认大小 ...

  2. JVM学习笔记之-运行时数据区概述及线程概述,程序计数器(PC寄存器),虚拟机栈(栈,局部变量表,操作数栈,动态连接,方法调用,方法返回地址等),本地方法接口,本地方法栈

    运行时数据区概述及线程概述 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JV ...

  3. 程序计数器(PC寄存器)以及java虚拟机栈的存储结构与运行原理的基本介绍

    学习内容: 1.运行时数据区的结构 2.JVM线程的说明 3.程序计数器(PC寄存器) 4.java虚拟机栈 内容详情: 1.运行时数据区的结构 其中:上面的本地方法栈,程序计数器,虚拟机栈是每个线程 ...

  4. PC寄存器/程序计数器(Program Counter Register)

    目录 1.什么是pc寄存器? 2.pc寄存器的作用以及详解? 3.相关面试题? 4.涉及相关知识补充 1.JVM中的程序计数寄存器(Program Counter Register)中,Registe ...

  5. 三、程序计数器(PC寄存器)

    文章目录 1.PC Register 介绍 介绍 作用 2.举例说明 3.两个常见问题 使用PC寄存器存储字节码指令的地址有什么用? PC寄存器为什么会被设定为线程私有的? 1.PC Register ...

  6. JVM系列(三):程序计数器(PC寄存器)

    1.运行时数据区 红色部分(方法区.堆),每个进程一份: 灰色部分(程序计数器.本地方法栈.虚拟机栈),每个线程一份,线程间共享堆.堆外内存 2.程序计数器 作用:通过改变这个计数器的值来选取下一条需 ...

  7. pc寄存器or程序计数器

    一:PC寄存器解释 二:PC寄存器的作用

  8. 深入理解JVM的PC寄存器(Program Counter Register)

    文章目录 深入理解JVM的PC寄存器(Program Counter Register) PC寄存器概念 用一个程序演示PC寄存器 两个常见问题 深入理解JVM的PC寄存器(Program Count ...

  9. 大脸猫讲逆向之ARM汇编中PC寄存器详解

    i春秋作家:v4ever 近日,在研究一些开源native层hook方案的实现方式,并据此对ARM汇编层中容易出问题的一些地方做了整理,以便后来人能有从中有所收获并应用于现实问题中.当然,文中许多介绍 ...

最新文章

  1. 表弟高考650多,程序员不建议学计算机,亲戚:你不希望别人好
  2. jquery实现动态五角星评分
  3. python获取历史双色球数据_你的梦想,我来买单!Python分析双色球中奖号码竟成功获取特等奖
  4. lnmp解析php,搭建LNMP,可以解析PHP文件-Go语言中文社区
  5. jps出现– process information unavailable解决方法
  6. Fiddler--QUICKEXER
  7. 阿里云构建Jenkins服务
  8. linux下定时执行任务方法【转】
  9. 不想被瓶颈必须了解的计算机基础
  10. python实验总结与分析_Python程序设计实验一报告
  11. matlab yalmip cplex,matlab – CPLEX YALMIP – “未找到解算器”?
  12. 时域,频域与傅立叶变换 - 慕水 - CSDNBlog
  13. RTP payload format for VP9 video
  14. python哈希类型_Python散列类型和运算符
  15. 基于boost库的搜索引擎
  16. 【C/C++】【面经】2022 网易互娱面经( 游戏客户端方向 )(更新:一面;二面;)
  17. 实现LOL游戏中英雄技能的释放
  18. 2022款联想拯救者R7000P和联想小新Pro16 选哪个好
  19. 三角形(triangle)
  20. 年薪6万美元/应届医学博士赴加州大学圣迭戈分校博士后就职

热门文章

  1. vue实现不同浏览器字体兼容的问题
  2. nginx 发布前端资源的缓存方案
  3. JavaWeb(5)——XML Tomcat
  4. css居中大全(文字居中、块居中、水平居中、垂直居中)
  5. 嵌入式Linux下基于FFmpeg的视频硬件编解码[图]
  6. Linux——4linux实用操作
  7. 了解Wi-Fi信号强度
  8. 由于之前的分页链接url不规范,导致百度爬虫搜索到死链接
  9. cocos2dx骨骼动画Armature源码分析(二)
  10. python 动态规划 旅行商问题_旅行商问题动态规划解法(python版)