JVM内存结构 - 程序计数器

程序计数器是JVM中的一个重要组成部分,它是一个线程私有的内存区域,用于存储下一条即将执行的字节码指令地址。在多线程环境下,每个线程都有独立的程序计数器,确保线程切换后能恢复正确执行位置。由于其不会引发内存溢出,因此在Java内存模型中没有涉及内存溢出错误。
摘要由CSDN通过智能技术生成

1 定义

全称:Program Counter Register 程序计数器(寄存器)

(1)一块较小的内存空间,它的作用是当前线程所执行的字节码行号指示器(记录下一条jvm指令的执行地址)

(2)一个处理器只会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器(线程私有)

(3)唯一一个在jvm中没有规定任何OutOfMemoryError的区域

 

2 作用

记住下一条JVM指令的执行地址。

  • 执行步骤:java源码不能直接执行,必须经过编译后转换为二进制字节码,二进制字节码是一些jvm的指令,jvm指令不能直接提交给CPU进行执行,需要通过一个解释器转换为机器码,再提交给CPU进行执行。
  • 程序计数器在其中的作用:程序计数器位于二进制字节码和解释器之间,用于记录下一条jvm指令的执行地址。解释器每次转换为机器码的同时会把下一条jvm指令的地址放入到程序计数器中,如此循环,知道转换完成。

 

3 实现

寄存器(整个CPU组件里读取速度最快的单元)

4.特点

  1. 是线程私有的
  • 在多个线程执行的时候,CPU会给各个线程分配时间片,在一个时间片内,如果线程一没有执行完,则会保存他的状态,执行线程二
  • 线程一在一个时间片执行完后,会将执行到的指令下一条地址保存在程序计数器中,该程序计数器只是属于线程一的
  • 线程一再一次抢到时间片,则可以将程序计数器中的地址取出,继续向下运行

     2.不会存在内存溢出

     3.每个线程都有自己的程序计数器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值