【JVM基础02】——组成-程序计数器解读
创始人
2024-12-26 11:08:09
0

目录

  • 1- 引言:程序计数器
    • 1-1 程序计数器是什么?为什么用程序计数器?(What)(Why)
  • 2- 核心:程序计数器的原理(How)
    • 2-1 使用 javap 查看程序计数器的作用
    • 2-2 多线程下程序计数器原理举例
  • 3- 小结:什么是程序计数器?

1- 引言:程序计数器

1-1 程序计数器是什么?为什么用程序计数器?(What)(Why)

  • 程序计数器 是运行时数据区的一部分,称为 PC register。
  • 它是线程私有的,不存在线程安全问题,主要用于保存字节码行号,记录正在执行的字节码指令的地址。

image.png


2- 核心:程序计数器的原理(How)

2-1 使用 javap 查看程序计数器的作用

  • 打印堆栈大小,局部变量的数量和方法的参数。
javap -v xx.class  
  • 举例说明:程序计数器的作用
public class Application {      public static void main(String[] args) {         System.out.println("hello world");     } } 

image.png
对于上述代码

  1. 获取 class 文件:通过编译找到目标 target 文件夹中的 class 文件。
  2. 反汇编字节码:右键 class 文件,打开命令窗口,输入 javap -v Application.class 命令查看字节码的反汇编信息。
  3. 字节码分析
    • getstatic:获取静态变量 System.out,它是一个静态属性,类型为 PrintStream
    • ldc:加载常量 hello world,这是一个字符串常量。
    • invokevirtual:调用方法 PrintStream.println,打印字符串。
    • return:结束方法执行。
  4. 字节码执行顺序:字节码指令按顺序执行,程序计数器记录每个线程的执行行号。
  5. 多线程示例:程序计数器记录每个线程执行的行号,确保线程被中断后可以继续执行。

结论:对于 一行 Java 代码在被转为字节码执行时,会被拆分成很多行进行执行,之所以需要程序计数器是因为,通过程序计数器可以记录 字节码行号,记录正在执行的字节码指令的地址


2-2 多线程下程序计数器原理举例

  • 多线程环境下,程序计数器通过记录每个线程的执行行号,确保线程在被中断后能从中断处继续执行。
  • 比如线程 1 先执行到第 10 行,此时时间片被 线程2 夺走,当下次再次切换回线程 1 时候,程序计数器使线程 1 可以继续执行第 10 行 字节码。

image.png


3- 小结:什么是程序计数器?

在这里插入图片描述

相关内容

热门资讯

记者获悉!心悦俱乐部游戏辅助,... 记者获悉!心悦俱乐部游戏辅助,新518互游脚本,解密教程(总是存在有挂)-哔哩哔哩1、游戏颠覆性的策...
今日!小闲54辅助,新超凡软件... 今日!小闲54辅助,新超凡软件辅助,靠谱教程(一直真的是有挂)-哔哩哔哩1、任何新超凡软件辅助ai辅...
网友热议!福气辅助器,拱趴游戏... 网友热议!福气辅助器,拱趴游戏攻略,解密教程(一直有挂)-哔哩哔哩1、每一步都需要思考,不同水平的挑...
日前!衢州都莱破解器,微乐陕西... 日前!衢州都莱破解器,微乐陕西小程序破解版下载,新2025教程(果然真的有挂)-哔哩哔哩1、用户打开...
有玩家发现!新西游脚本辅助,7... 有玩家发现!新西游脚本辅助,728游戏怎么控制的,科技教程(都是存在有挂)-哔哩哔哩一、728游戏怎...
出现新变化!蜀渝牌乐汇辅助器,... 出现新变化!蜀渝牌乐汇辅助器,衢州都莱辅助器免费,存在挂教程(其实存在有挂)-哔哩哔哩1、用户打开应...
一直以来!禅游指尖四川修改器,... 一直以来!禅游指尖四川修改器,决战卡五星辅助看牌器,黑科技教程(本来存在有挂)-哔哩哔哩1、进入到决...
随着!小程序广东雀神智能插件免... 随着!小程序广东雀神智能插件免费,掌中乐游戏辅助器,玩家教程(好像是真的挂)-哔哩哔哩1、游戏颠覆性...
最新消息!透视辅助工具,开心游... 最新消息!透视辅助工具,开心游戏攻略,玩家教程(都是真的有挂)-哔哩哔哩亲,关键说明,开心游戏攻略赛...
目前!jj斗地主麻将外g挂,三... 目前!jj斗地主麻将外g挂,三哥玩辅助器免费下载,技巧教程(总是是有挂)-哔哩哔哩1、目前!jj斗地...