JVM:程序计数器

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

可以理解为:

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

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


主要作用

  1. 控制字节码执行流程

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

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

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


特点

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

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

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


面试简答版

相关推荐
g***78918 小时前
Java语法进阶
java·开发语言·jvm
多多*10 小时前
Threadlocal深度解析 为什么key是弱引用 value是强引用
java·开发语言·网络·jvm·网络协议·tcp/ip·mybatis
2501_9418017613 小时前
Java高性能数据库操作实战:异步任务与多线程结合代码解析
jvm
用户849137175471614 小时前
Tomcat 为什么要“造反”?深度解析 Java 类加载机制的“守”与“破”
java·jvm
杀死那个蝈坦14 小时前
UV 统计(独立访客统计)
java·jvm·spring·kafka·tomcat·maven
野生技术架构师15 小时前
Java 经典面试题汇总:多线程 +spring+JVM 调优 + 分布式 +redis+ 算法
java·jvm·spring
酷ku的森15 小时前
JVM内存结构
jvm
他们都不看好你,偏偏你最不争气15 小时前
【iOS】数据持久化
jvm·数据库·macos·ios·oracle·objective-c·cocoa
MediaTea15 小时前
Python 库手册:gc 垃圾回收
java·开发语言·jvm·python·算法
j***121515 小时前
java进阶1——JVM
java·开发语言·jvm