2. 什么是程序计数器

 1. JVM介绍和运行流程-CSDN博客

2. 什么是程序计数器-CSDN博客

3. java 堆和 JVM 内存结构-CSDN博客

4. 虚拟机栈-CSDN博客

5. JVM 的方法区-CSDN博客

6. JVM直接内存-CSDN博客

7. JVM类加载器与双亲委派模型-CSDN博客

8. JVM类装载的执行过程-CSDN博客

9. JVM垃圾回收-CSDN博客

10. 垃圾回收的算法-CSDN博客

11. JVM中的分代回收-CSDN博客

12. JVM的垃圾回收器-CSDN博客

13. G1垃圾回收器-CSDN博客

14. 垃圾回收的引用区别-CSDN博客

15. JVM调优的参数设置-CSDN博客

16. JVM调优工具-CSDN博客


1. 什么是程序计数器

JVM(Java虚拟机)中,程序计数器(Program Counter Register) 是一块较小的内存空间,它是线程私有的数据结构,每个线程在创建时都会独立拥有一个程序计数器。

它的核心作用是存储当前线程正在执行的 JVM 指令的地址(或偏移量),是控制程序执行流程的关键组件。

程序计数器的主要特性:

  • 线程私有
    它是线程安全的,每个线程都有独立的程序计数器,互不干扰。这是JVM多线程机制的基础之一(线程切换后能恢复到正确的执行位置)。

  • 存储指令地址

    • 如果线程正在执行Java方法,程序计数器记录的是当前正在执行的JVM指令的地址(即方法区中指令的偏移量)。

    • 如果执行的是Native方法(如本地C/C++代码),程序计数器的值为空(undefined),因为Native方法的执行不受JVM管理。

  • 不会内存溢出(OOM)
    程序计数器是JVM规范中唯一没有规定任何OutOfMemoryError情况的区域,其生命周期随线程的创建而创建,随线程结束而销毁。

2. 示例说明

我们可以通过指令去打印堆栈大小,查看局部变量的数量和方法的参数。

javap -v xx.class

 比如有一个线程的执行顺序如下:

假设该线程开始执行:

执行开始是从第一行开始执行, 

当这个 线程1 执行至 第10行时,时间片被夺走,该线程没有执行权,

为了下次获取执行权能继续执行,程序计数器 就会记录当前位置。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惊骇世俗王某人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值