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执行。