【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 操作指令及地址
相关推荐
头茬韭菜1 小时前
3.9 成本预警 — 退出钩子、$5 阈值对话框与多通道成本通知
java·大数据·jvm·ai
并不喜欢吃鱼2 小时前
从零开始 C++----- 十五.一文吃透 C++ 异常:try-catch、栈展开、自定义异常、异常安全 noexcept 底层全剖析
java·开发语言·jvm
haluhalu.4 小时前
prompts.chat:02-anatomy-of-effective-prompt
jvm·prompt
小猿备忘录1 天前
JVM 调优完全手册(Java 8 版)
java·开发语言·jvm
KobeSacre1 天前
CyclicBarrier 源码
java·jvm·算法
脚后跟法1 天前
.NET热门ORM真实的性能测试总结
jvm·php·.net
whaledown2 天前
互联网大厂Java求职面试三轮提问详解(涵盖Spring Boot、微服务、Kafka等核心技术)
java·jvm·数据库·spring boot·微服务·面试·kafka
hdsoft_huge2 天前
JDK系列19:JVM全维度调优实战,内存、元空间、线程栈、GC参数压测调优完整方案
java·开发语言·jvm
-西门吹雪3 天前
现代C++ 并发编程-学习指南
java·jvm·c++
阿pin3 天前
Java随笔-GC收集器工作机制
java·开发语言·jvm·gc