JVM:程序计数器

在 JVM 里,程序计数器(Program Counter Register,PC 寄存器)是一个很小的内存空间,用来存放当前线程所执行的字节码的行号指示器

可以理解为:

  • 它记录了当前线程下一条将要执行的字节码指令的地址

  • 执行引擎在运行时,就是依靠程序计数器来"知道下一步该去哪条指令"。


主要作用

  1. 控制字节码执行流程

    • JVM 通过改变程序计数器的值,来实现分支、循环、跳转、异常处理、线程恢复等功能。
  2. 线程切换时的恢复

    • JVM 是多线程的,每个线程在执行时都会有自己的程序计数器(是线程私有的)。

    • 当发生线程切换时,程序计数器能保存当前线程执行到哪一条字节码,等线程切回来的时候,可以从中断的位置继续执行。


特点

  • 线程私有:每个线程都有自己独立的 PC 寄存器,互不影响。

  • 唯一不会 OOM 的内存区域:Java 虚拟机规范里,PC 寄存器是唯一一个没有规定任何 OOM 情况的区域,因为它只保存一个小小的行号值。

  • 执行 Native 方法时 :程序计数器值是 undefined,因为此时不再执行字节码。


面试简答版

相关推荐
小旭952719 小时前
Java 反射详解
java·开发语言·jvm·面试·intellij-idea
HalvmånEver19 小时前
Linux:线程创建与终止上(线程五)
java·linux·jvm
m0_7066532320 小时前
Python入门:从零到一的第一个程序
jvm·数据库·python
2301_7657031420 小时前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python
2301_7903009620 小时前
深入理解Python的if __name__ == ‘__main__‘
jvm·数据库·python
helloworldandy20 小时前
趣味项目与综合实战
jvm·数据库·python
ctyshr20 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
一起养小猫20 小时前
Flutter for OpenHarmony 实战:天气预报应用UI设计与主题切换
jvm·数据库·spring·flutter·ui·harmonyos
weisian15121 小时前
JVM--2-打破刻板印象:在Java中创建一个对象,一定是分配到堆内存吗?
java·开发语言·jvm·tlab·逃逸分析·标量替换
一起养小猫21 小时前
Flutter for OpenHarmony 实战:网络请求与JSON解析完全指南
网络·jvm·spring·flutter·json·harmonyos