JVM之PC寄存器-运行时数据区

结构概览

PC寄存器又叫程序计数器Program Counter Register,每个线程启动的时候都会创建一个PC寄存器,PC寄存器里保存有当前正在执行的JVM指令的地址。每一个线程都有他自己的PC寄存器,是一块较小的内存空间,是唯一一个不会出现OutOfMemoryError的内存区域,他的生命周期随着线程的创建而创建,随着线程的结束而死亡。

方法区:方法区(Method Area)和堆一样,是各个线程共享的内存区域,所有定义的方法的信息都存在该区域,此区属于共享区间
静态变量+常量+类信息(构造方法/接口定义)+运行时常量池。
被线程私有、独享的,一律没有优化和回收,被所有线程共享的,都有优化和回收>

20190514235224246.png

JVM之PC寄存器

PC寄存器( PC register ):每个线程启动的时候,都会创建一个PC(Program Counter,程序计数器)寄存器。PC寄存器里保存有当前正在执行的JVM指令的地址。 每一个线程都有它自己的PC寄存器,也是该线程启动时创建的。保存下一条将要执行的指令地址的寄存器是 :PC寄存器。PC寄存器的内容总是指向下一条将被执行指令的地址,这里的地址可以是一个本地指针,也可以是在方法区中相对应于该方法起始指令的偏移量。

每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向下一条指令的地址,也即将要执行的指令代码),由执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。

这块内存区域很小,它是当前线程所执行的字节码的行号指示器,字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令。

如果执行的是一个Native方法,那这个计数器是空的。

举例:如值日表,又如test1()调用test2(),test2()调用test3(),肯定顺序执行,就是pc寄存器的作用。

# 轮播附图   JVM  

评论

公众号:mumuser

企鹅群:932154986

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×