美文网首页
jvm(三)程序计数器

jvm(三)程序计数器

作者: 钉某人 | 来源:发表于2020-06-16 11:22 被阅读0次

程序计数器

作用:用来存储指向下一条指令的地址。由执行引擎读取下一条指令。

  • java虚拟机的多线程是通过线程切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器。各条线程之间计数器互不影响,独立存储,这类内存区域为线程私有的内存。
  • 程序计数器是唯一一个在java虚拟机规范中没有oom的内存区域,也没有垃圾回收。(虚拟机栈和本地方法栈没有垃圾回收,但是会有内存溢出,方法区和堆既有垃圾回收,也会有内存溢出)
  • 是程序控制流的指示器,分之、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器来完成

通过命令查看字节码

javap -v xxx.class

#程序计数器存储的是下一条指令的地址
字节码部分截图

面试题:

1.使用pc寄存器(程序计数器)存储字节码指令地址有什么作用?
为什么使用pc寄存器记录当前线程的执行地址。
java虚拟机的多线程是通过线程切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器。各条线程之间计数器互不影响,独立存储。
2.pc寄存器为什么会被设定成线程私有
多线程是在特定时间端内只会执行其中某一个线程的方法,cpu会不停切换任务,必然会导致线程的经常中断或恢复,为了能够准确的记录各个线程正在执行的当前字节码指令地址,最好的方法就是为每一个线程都分配一个pc寄存器,这样线程间可以进行独立计算,不会相互影响。

相关文章

  • 第一章 java虚拟机内存概要

    ###jvm运行时数据区域(NO.1) > >(img) >(img) ##程序计数器 >程序计数器在jvm中是一...

  • JVM

    JVM JVM 工作流程 运行时数据区(Runtime Data Area) 程序计数器 程序计数器(Progra...

  • 终于有人将jvm讲清楚了,阿里架构师推荐jvm架构解析文档

    一、JVM 内存区域划分 程序计数器(线程私有) 程序计数器(Program Counter Register),...

  • JVM 内存结构和垃圾回收

    1. JVM 内存结构 1.1 程序计数器 JVM 支持多线程同时执行,每个线程都有自己的程序计数器,线程正在执行...

  • JVM内存区域划分

    JVM内存的划分有五片: 程序计数器   程序计数器(Program Counter Register),也有称作...

  • 01 JVM内存结构组成

    1 JVM 概述图 2 内存结构 2.1 程序计数器 2.1.1 概述 程序计数器(寄存器):是记录下一条jvm指...

  • 图解jvm--(一)jvm内存结构

    jvm内存结构 1.程序计数器 1.1 定义 Program Counter Register 程序计数器(寄存器...

  • 深入理解JVM内存模型

    JVM 内存模型 运行时数据区域 程序计数器(Program Conunter Regisiter) 程序计数器是...

  • JVM垃圾回收

    JVM垃圾回收 内存结构 要想理解jvm的垃圾回收机制,必须先知道java虚拟机的内存结构。 程序计数器程序计数器...

  • Jvm内存结构与垃圾回收

    1. jvm运行时内存结构 程序计数器:当前线程通过程序计数器来辅助执行代码,《深入理解JVM》书作者称为...

网友评论

      本文标题:jvm(三)程序计数器

      本文链接:https://www.haomeiwen.com/subject/esmlxktx.html