程序计数器pc的功能,程序计数器pc的功能和特点?

程序计数器定义

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

作用

用于记录下一条jvm指令的执行地址,分支、循环、跳转、异常、线程恢复等都依赖于计数器

程序计数器pc的功能,程序计数器pc的功能和特点?

这是一段控制台输出的java代码,编译后各个阶段的情况,主要看二进制字节码部分。
当然这里的二进制字节码并不是大家所熟知的计算机的0和1,它并不能直接给到cpu执行,它需要通过解释器解释成一条机器码,机器码就可以交给cpu执行它了。 程序计数器的作用是记住下一条jvm指令的执行地址,从上面图中可以看出jvm指令前面都会有一个数字,可以把这个数字理解为一个指令对于的地址。

当这些指令被加载到虚拟机后执行顺序:
1. 先得到 0:getstatic 指令
2. 交给解释器
3. 解释器解释成机器码
4. 机器码交给cpu,cpu执行

与此同时它会把下一条指令的地址 3地址 放入我们的程序计数器,等第一条指令完全执行完后,解释器就会到程序计数器中取到下一条指令的地址,去找下一条指令找到后重复刚才的流程。

注意:
当解释器去程序计数器中取这个 3地址 的时候会把下一条指令 4地址 放入程序计数器中。
在物理上实现程序计数器是在一个叫做寄存器来实现的,寄存器可以说是cpu中读取速度最快的部分。

特点

线程私有

java程序支持多线程运行,多线程运行时cpu调度器组件会给线程分配一个时间片。
假如给线程一分配一个时间片,在时间片内它的代码没有执行完,它就会把线程一的状态执行一个暂存,切换到线程二中去,线程二执行完后又会切换到线程一。切换回去的时候会去程序计数器中拿到之前最后执行的代码地址,程序计数器绑定自己线程。

不会存在内存溢出。

在jvm规范中已经规定了程序计数器部分不会内存溢出

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 sumchina520@foxmail.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.vsaren.com/138717.html