代码编织梦想

程序计数器 = PC 寄存器

介绍

  • 寄存器存储指令相关的现场信息
  • JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟
  • 是运行速度最快的存储区域
  • 程序计数器会存储当前线程正在执行的Java方法的JVM指令地址;或者,如果是在执行native方法,则是未指定值(undefned)
  • 通过改变这个计数器的值来选取下一条需要执行的字节码指令
  • 无 GC (垃圾回收)
  • 无 OOM (OutOfMemoryError, 溢出异常) 唯一一个 

PC寄存器的作用

  • 用来存储指向下一条指令的地址,也即将要执行的指令代码。
  • 由执行引擎读取下一条指令,并执行该指令。

面试问题

使用PC寄存器存储字节码指令地址有什么用呢?

即为什么使用 PC 寄存器来记录当前线程的执行地址呢

  • 因为CPU需要不停的切换各个线程,切换回来以后,就得知道接着从哪开始继续执行
  • VM的字节码解释器需要通过改变PC寄存器的值来明确下一条应该执行什么样的字节码指令

PC寄存器为什么被设定为私有

  • 为了能够准确地记录各个线程正在执行的当前字节码指令地址,最好的办法自然是为每一个线程都分配一个PC寄存器
  • CPU时间片轮限制必然导致经常中断或恢复
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43934548/article/details/122878844

JVM第四章_程序计数器(PC寄存器)-爱代码爱编程

1、PC Register介绍 JVM中的程序计数寄存器(Program Counter Register) 中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有 把数据装载到寄存器才能够运行。 这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易

JVM第四章:程序计数器-爱代码爱编程

资料来源:尚硅谷宋红康老师授课资料 程序计数器 介绍 JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),

第四章 - 程序计数器-爱代码爱编程

文章目录 1.PC 寄存器介绍2.PC 寄存器的作用3.代码示例4.两个常见面试题5.CPU时间片 官网文档 1.PC 寄存器介绍 JVM中的程序计数寄存器(Program Counter Register),Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是

第 4 章 一 程序计数器、为什么使用程序计数器来记录当前线程的执行地址呢?-爱代码爱编程

第 4 章 程序计数器 (PC寄存器) 1、PC寄存器概述 (重点) 文档网址 https://docs.oracle.com/javase/specs/jvms/se8/html/index.html PC寄存器介绍 以及 作用 : 线程私有, 运行速度最快的存储区域, 程序计数器会存储当前线程正在执行的Java方法的JVM指令

jvm-第四章:程序计数器-爱代码爱编程

1.PC 寄存器概述 参考文档地址 https://docs.oracle.com/javase/specs/jvms/se8/html/index.html PC 寄存器介绍 JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数

第四章 程序计数器-爱代码爱编程

4.1PC Register介绍 JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟 作用:PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。 它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持

第4章 程序计数器(PC寄存器)-爱代码爱编程

第4章 程序计数器(PC寄存器) 来自尚硅谷宋红康老师讲解的JVM:bilibili链接 1 PC Register介绍 虚拟机规范:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5.1 PC寄存器是一块很小的内存空间,几乎可以忽略不计。也是

JVM学习笔记 - 第四章 程序计数器-爱代码爱编程

目录 1. PC寄存器介绍2. PC寄存器的作用3. 代码示例4. 两个常见的面试问题5. CPU时间片 JVM官方文档 1. PC寄存器介绍 JVM中的程序计数器(Program Counter Register),Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行这

java 程序计数器_Java中的程序计数器是什么-爱代码爱编程

程序计数器是当前线程正在执行的字节码的地址。程序计数器是线程隔离的,每一个线程在工作的时候都有一个独立的计数器。 JAVA虚拟机管理的内存区域图 1.什么是程序计数器? 程序计数器是当前线程正在执行的字节码的地址。程序计数器是线程隔离的,每一个线程在工作的时候都有一个独立的计数器。 2.字节码的执行原理 编译后的字节码在没有经过JIT(实

第四章.程序计数器-爱代码爱编程

目录 1.介绍2.作用3.代码演示4.使用PC寄存器存储字节码指令地址有什么用呢?5.PC寄存器为什么被设定为私有的?6.CPU时间片 1.介绍 JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,

java内存模型 程序计数器_第 4 章 程序计数器-爱代码爱编程

第 3 章 运行时数据区概述及线程 微信搜一搜: 全栈小刘,获取文章全套 pdf版本 1、前言 本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段 当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引

JVM-第四章:程序计数器-爱代码爱编程

PC Register 介绍 JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些

第四章 程序计数器(PC寄存器)-爱代码爱编程

作用 PC寄存器的作用是存储下一条指令的地址,也就是即将要执行的指令的地址。然后会由执行引擎来执行下一条指令。 介绍 它是一块很小的内存空间,小到几乎可以忽略不计,也是运行速度最快的存储区域。在JVM规范中,每个线程都有自己的程序计数器,它是线程私有的。它的生命周期与线程的生命周期是一致的。任何时间一个线程都只有一个方法在执行,也就是所谓的当前方

第三章、运行时数据区及程序计数器-爱代码爱编程

第三章、运行时数据区及程序计数器 3、运行时数据区及程序计数器3.1. 运行时数据区3.1.1. 概述3.1.2. 线程3.1.3. JVM系统线程3.2. 程序计数器(PC寄存器)3.2.1. 介绍3.2.2. 作用3.2.3. 常见面试题 笔记根据网课:尚硅谷宋红康JVM全套教程(详解java虚拟机)整理 3、运行时数据区及程序

JVM虚拟机(HotSpot)第四章:程序计数器(PC寄存器)-爱代码爱编程

JVM虚拟机(HotSpot) 第四章:程序计数器(PC寄存器) JVM的程序计数寄存器(Program Counter Register),不是广义上的物理寄存器,可以将其翻译为PC计数器(或指令计数器) 会更加容易理 解,JVM 中的PC寄存器是对物理PC寄存器的一种抽象模拟。 作用: PC寄存器用来存储指向下一条指令的体制,也就是即将要执行

Java代码审计之FileUpload-文件上传漏洞审计与修复-爱代码爱编程

java代码审计系统课程--代码审计视频教程-信息安全-CSDN程序员研修院少写“漏洞” 了解常见代码安全 提升代码安全能力 代码不被黑客黑-https://edu.csdn.net/course/detail/32634 访问url为http://localhost:8080/file/any 直接对上传的文件保存在了指定路径下, @PostM

Maven- 从Maven简介到安装配置成功、使用练习、生命周期简单介绍-爱代码爱编程

文章目录 Maven简介依赖管理自我总结Maven安装配置环境变量配置新建系统变量编辑系统Path运行测试注意配置本地仓库编辑xml文件指定仓库位置新建仓库MAVEN默认本地仓库位置配置阿里云私服Maven基本使用Maven常用命令模拟案例测试idea新建maven项目复制下面的xml文件到pom.xml文件中src下写入测试类打开新建的maven