【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 操作指令及地址
相关推荐
扶苏瑾11 小时前
线程安全问题的产生原因与解决方案
java·开发语言·jvm
百锦再13 小时前
Java中的反射机制详解:从原理到实践的全面剖析
java·开发语言·jvm·spring boot·struts·spring cloud·kafka
攒了一袋星辰14 小时前
JVM类加载过程
运维·服务器·jvm
wuqingshun31415915 小时前
说一下java的反射机制
java·开发语言·jvm
wuqingshun31415918 小时前
红黑树有哪些特征
java·开发语言·jvm
wuqingshun31415918 小时前
说一下什么是fail-fast
java·开发语言·jvm
wuqingshun31415918 小时前
知道java NIO吗?和java IO有什么区别?
java·开发语言·jvm
wuqingshun31415920 小时前
Object有哪些方法,大致说一下每个方法的含义?
java·开发语言·jvm
wuqingshun31415921 小时前
说一下JVM内存结构
java·开发语言·jvm
GEM的左耳返1 天前
Java面试深度剖析:从JVM到云原生的技术演进
jvm·spring boot·云原生·中间件·java面试·分布式架构·ai技术