jvm——PC寄存器

jvm运行时数据区

jvm区域划分,主要分为5个重要组成部分

  • java虚拟机栈
  • 元空间(jdk7以前叫方法区)
  • 本地方法栈
  • pc寄存器
    这边重点讲解pc寄存器

pc寄存器

  • 概念
    jvm中pc寄存器,又叫程序计数器。不同于cpu中的寄存器用于存储计算的中间结果,pc寄存器用来存储下一条指令的地址。

  • 生命周期
    pc寄存器是线程私有的,每个线程在创建时都会分配一个pc寄存器,所以pc寄存器的生命周期与线程绑定。

  • 作用
    pc寄存器是程序控制流的指示器,用于分支,循环,跳转和异常处理以及线程恢复等功能。因cpu要不停地切换线程执行,pc寄存器正是记录了上次执行的地方。

  • 异常规定
    由于pc寄存器只是存储下一行指令的地址,所以pc寄存器的内存空间可以忽略不计,所以pc寄存器是唯一没有指定oom异常的区域,并且不会被垃圾回收。

代码说明

代码如下,定义了i和j,并相加赋给了k

命令行执行javap -v PcRegisterTest.class 查看字节码。其中左边序号是pc寄存器存储的地址,右边是jvm的指令,执行引擎会读pc寄存器中的地址(即下一个指令)翻译成机器语言,并交给cpu执行。

显示 Gitment 评论