我们都知道一个JVM进程中有多个线程在执行,而线程中的内容是否能够拥有执行权,是根据CPU调度来的。

假如线程A正在执行到某个地方,突然失去了CPU的执行权,切换到线程B了,然后当线程A再获得CPU执行权的时候,怎么能继续执行呢?这就是需要在线程中维护一个变量,记录线程执行到的位置。

程序计数器占用的内存空间很小,由于Java虚拟机的多线程是通过线程轮流切换,并分配处理器执行时间的方式来实现的,在任意时刻,一个处理器只会执行一条线程中的指令。因此,为了线程切换后能够恢复到正确的执行位置,每条线程需要有一个独立的程序计数器(线程私有)。

如果线程正在执行Java方法,则计数器记录的是正在执行的虚拟机字节码指令的地址;

如果正在执行的是Native方法,则这个计数器为空。

The Java Virtual Machine can support many threads of execution at once (JLS
§17). Each Java Virtual Machine thread has its own pc (program counter)
register. At any point, each Java Virtual Machine thread is executing the code
of a single method, namely the current method (§2.6) for that thread. If that
method is not native, the pc register contains the address of the Java Virtual
Machine instruction currently being executed. If the method currently being
executed by the thread is native, the value of the Java Virtual Machine's pc
register is undefined. The Java Virtual Machine's pc register is wide enough to
hold a returnAddress or a native pointer on the specific platform.

The pc Register(程序计数器)相关推荐

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

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

  2. java pc计数器_java虚拟机-程序计数器PC Register

    什么是程序计数器? 程序计数器是一块 较小 的内存空间,它可以看做是当前线程所执行的字节码的 行号指示器 :在虚拟机的概念模型里(仅仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解 ...

  3. java虚拟机-程序计数器PC Register

    什么是程序计数器? 程序计数器是一块 较小 的内存空间,它可以看做是当前线程所执行的字节码的 行号指示器 :在虚拟机的概念模型里(仅仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解 ...

  4. 个人对408计算机组成原理中PC(程序计数器)位数的理解

    首先PC程序计数器的位数与主存的容量有关系也和要获取下一条要执行的指令也有关系. 假设PC要获取完主存中所有的指令那么PC要持续+"1"直到获取完最后一条指令,这里的"1 ...

  5. 分页池内存持续增长_Java技术学习之对虚拟机(JVM)内存模型的分析

    JVM会将Java进程所管理的内存划分为若干不同的数据区域,这些区域有各自的用途.创建/销毁时间. JVM内存数据:栈管运行,堆管存储 第一章 线程私有区域 线程私有数据区域生命周期与线程相同, 依赖 ...

  6. java jvm 内存参数_深入详解JVM内存模型与JVM参数详细配置

    对于大多数应用来说,Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块.Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建. JVM内存结构 由上图可以清楚的看到 ...

  7. 说一下 JVM 的主要组成部分?及其作用?

    class loader 类加载器:加载类文件到内存.Class loader只管加载,只要符合文件结构就加载,至于能否运行,它不负责,那是有Exectution Engine 负责的. execti ...

  8. 十年架构师详解JVM运行原理

    做Java开发的几乎都知JVM这个名词,但是由于JVM对实际的简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及理解什么是JVM,以 ...

  9. 为什么jvm要分为堆、方法区等?原理是什么?_「JVM」知识点详解一:JVM运行原理详解...

    前言 JVM 一直都是面试的必考点,大家都知道,但是要把它搞清楚又好像不是特别容易.JVM 的知识点太散,不系统,今天带大家详细的了解一下jvm的运行原理. 正文 1 什么是JVM? JVM是Java ...

最新文章

  1. teach-es6-2(class)
  2. css 样式三元运算_CSS扩展语言——Sass入门指南
  3. ostu进行遥感图像的分割
  4. 今天,给我妈打电话聊了我爸
  5. redis的淘汰策略
  6. 1067. Sort with Swap(0,*)
  7. Sparse Modeling of Intrinsic Correspondences
  8. [Zeppelin]Zeppelin安装与初体验
  9. React - 函数作为子组件
  10. 数据库——怎样实现数据完整性
  11. 理解modle下的gradle
  12. android exoplayer 直播流,使用Exo-Media Player播放RTMP直播
  13. 算法设计技巧与分析(六):图遍历(Graph Traversal)
  14. Hive常用函数介绍(窗口函数)
  15. Es检索 must与filter区别
  16. 第八天 (API,字符串,string,stringbuilder,stringjoiner)
  17. 美泰推出首款获CarbonNeutral(R)认证的Matchbox(R) Tesla Roadster压铸模型车,使用99%的回收材料制作,彰显品牌的发展蓝图
  18. Win10下设置开机自动挂载虚拟磁盘
  19. JSP四大作用域的范围
  20. CISCO模拟器dynagen的自定义拓扑和配置

热门文章

  1. Java继承多态经典案例分享
  2. go/git设置及取消代理方法
  3. JMS--ActiveMq与spring整合(二)
  4. ubuntu-14.04.2-desktop-i386.iso:ubuntu-14.04.2-desktop-i386:安装Oracle11gR2
  5. 《Windows Phone 8 Development Internals》读书笔记-1-1-连载
  6. 设计模式札记——单例模式(Singleton Pattern)
  7. 自由鸟书评排行网开始上线试运行,欢迎前往评论!
  8. Properties类详细解析
  9. vue中axios请求的封装
  10. mysql学习-初识mysql