【jvm】程序计数器

目录

      • 一、介绍
      • 二、作用
      • 三、示例
        • [3.1 代码](#3.1 代码)
        • [3.2 javap -v Test1.class](#3.2 javap -v Test1.class)
          • [3.2.1 操作指令及地址](#3.2.1 操作指令及地址)

一、介绍

  • 1.jvm中的程序计数寄存器中(program counter register),register的命名源于cpu的寄存器,寄存器存储指令相关的现场信息
  • 2.cpu只有把数据装载到寄存器才能够运行
  • 3.不是广义上的物理寄存器,是pc计数器或指令计数器,也称程序钩子
  • 4.jvm中的pc寄存器是对物理pc寄存器的一种抽象模拟
  • 5.是一块很小的内存空间,几乎可以忽略不记
  • 6.是运行速度最快的存储区域
  • 7.在jvm规范中,每个线程都有各自的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致
  • 8.任何时间一个线程都只有一个方法在执行,即当前方法
  • 9.程序计数器会存储当前线程正在执行的java方法的jvm指令地址,如果在执行native本地方法,则是未指定值undefined
  • 10.是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成
  • 11.字节码解释器工作时是通过改变这个计数器的值来选取下一条需要执行的字节码指令
  • 12.是唯一一个在java虚拟机规范中没有规定任何OutOfMemoryError情况的区域

二、作用

  • 1.pc寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码
  • 2.由执行引擎到pc寄存器中拿到指令地址,根据指令地址读取下一条指令

三、示例

3.1 代码
复制代码
package com.learning.pc_register;

/**
 * @Author wangyouhui
 **/
public class Test1 {
    public static void main(String[] args) {
        int i = 10;
        int j = 20;
        int k = i + j;
    }
}
3.2 javap -v Test1.class
3.2.1 操作指令及地址
相关推荐
H_老邪10 小时前
JVM 遇到的问题-1.1
jvm
SKH.10 小时前
Linux软件编程(5)线程
java·linux·jvm
liangbo713 小时前
JVM规范第 2章:从 class 文件到运行时数据区
java·jvm
沐苏瑶15 小时前
JVM-内存区域、垃圾回收与类加载机制
java·jvm
Mr. zhihao1 天前
死锁排查实战:JVM 唯一会“自动报案“的问题(场景 B5)
java·jvm·gc
Mr. zhihao1 天前
OOM 排查实战(大结局):从老年代爬坡到 VisualVM 引用链实锤(场景 B4)
jvm·gc·oom·mat·visulvm
H_老邪1 天前
JVM 遇到的问题-1.0
jvm
liangbo72 天前
JVM规范第 4 章:class 文件格式
java·jvm
夕除2 天前
redis--008
java·jvm·数据库
liangbo72 天前
JVM规范第 1章:从一段历史到「JVM 并不认识 Java」
java·jvm