【JVM基础02】——组成-程序计数器解读

目录

  • 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- 小结:什么是程序计数器?

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/46700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

object-C 解答算法:移动零(leetCode-283)

移动零(leetCode-283) 题目如下图:(也可以到leetCode上看完整题目,题号283) 解题思路: 本质就是把非0的元素往前移动,接下来要考虑的是怎么移动,每次移动多少? 这里需要用到双指针,i 记录每次遍历的元素值, j 记录“非0元素值”需要移动到的位置; 当所有“非0元素值”都移…

vue3前端开发-小兔鲜项目-热门品牌推荐栏目

vue3前端开发-小兔鲜项目-热门品牌推荐栏目!这一期内容,大家一定要认真的看完。因为,黑马官方教程视频里面老师没有讲这个,但是内容其实不难。只是按照之前的流程操作就行了。我把自己写好的代码分享给大家。做个参考demo。 第一步…

可用内存为什么可以超过实际内存

一、虚拟CPU和虚拟内存: 1、虚拟cpu: 利用进程机制,所有的现代操作系统都支持在同一时间来完成多个任务。尽管某个时刻,真实的CPU只能运行一个进程,但是从进程自己的角度来看,它会认为自己在独享CPU&…

安科瑞受邀参加2024年杭州建筑电气年会

24年7月4-5日,由杭州市土木建筑学会建筑电气专业委员会主办,中国联合工程有限公司,浙江省建设投资集团股份有限公司工程设计总院,大象建筑设计有限公司承办的2024年杭州建筑电气年会在杭州万华国际酒店隆重举办。杭州市各设计院所…

服务器数据恢复—RAID5阵列重建重建导致数据丢失的数据恢复案例

服务器数据恢复环境&故障: 一台服务器,有一组由5块硬盘组建的raid5磁盘阵列。 服务器在运行过程中一块有磁盘掉线,由于raid5阵列支持一块磁盘掉线的特性,服务器还在正常工作。不久之后服务器出现故障,管理员在不了…

【洁净室】压缩气体检测参考标准:悬浮粒子、微生物、水油检测

在洁净室,特别是达到ISO 5或更高级别的环境中,维护严格的污染控制是不可或缺的。其中,压缩气体的质量是一个至关重要的潜在污染源。为确保压缩气体不会引入损害洁净室完整性的微粒,适当的气体取样成为了一项核心任务。国际标准ISO…

C2W1.LAB.Vocabulary Creation+Candidates from String Edits

理论课:C2W1.Auto-correct 文章目录 Vocabulary CreationImports and DataPreprocessingCreate Vocabulary法1.集合法法2.词典加词频法Visualization Ungraded Exercise Candidates from String EditsImports and DataSplitsDelete Edit Ungraded Exercise 理论课&…

【中项第三版】系统集成项目管理工程师 | 第 5 章 软件工程① | 5.1 - 5.3

前言 第5章对应的内容选择题和案例分析都会进行考查,这一章节属于技术的内容,学习要以教材为准。 目录 5.1 软件工程定义 5.2 软件需求 5.2.1 需求的层次 5.2.2 质量功能部署 5.2.3 需求获取 5.2.4 需求分析 5.2.5 需求规格说明书 5.2.6 需求变…

C++写一个线程池

C写一个线程池 文章目录 C写一个线程池设计思路测试数据的实现任务类的实现线程池类的实现线程池构造函数线程池入口函数队列中取任务添加任务函数线程池终止函数 源码 之前用C语言写了一个线程池,详情请见: C语言写一个线程池 这次换成C了!…

获取淘宝商品详情app原数据item_get_app响应参数解析(二):商品标题、销量、sku、价格、视频

API名:item_get_app 功能说明:通过传入商品id获取该商品的详情页原数据。因为是原数据,响应参数较多。 请求示例(curl): -- 请求示例 url 默认请求参数已经URL编码处理 curl -i "https://api-服…

Java 在PDF中替换文字(详解)

目录 使用工具 Java在PDF中替换特定文字的所有实例 Java在PDF中替换特定文字的第一个实例 Java在PDF中使用正则表达式替换特定文字 其他替换条件设置 可能出现的问题及解决方案 PDF文档中的信息随时间的推移可能会发生变化,比如产品价格、联系方式等。为了确保…

2024可信数据库发展大会|存算分离架构驱动电信数据平台革新

7 月 16 日 - 17 日,由中国通信标准化协会和中国信息通信研究院主办,大数据技术标准推进委员会承办,InfoQ 联合主办的「2024 可信数据库发展大会」(TDBC)在北京召开。 酷克数据解决方案架构师吴昊受邀参与“电信行业数…

算法-计数质数

题目: 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 思路: 使用埃式筛法 当n大于等于2时,如果当前遍历的数 i 是质数,那么从 i*i 开始,直到 n 为止,把 i 的倍数都标记为合数 代码&a…

为什么提示词写作技能会让生成式AI工程师更上一层楼?

欢迎来到云闪世界。 “为什么我的经理对我的文章吹毛求疵?把措辞从 X 改为 Y 有什么区别?” 当你看到你的经理在你的文档中提出了无数建议时,你可能发现自己有这样的想法;我知道我有过。事实上,我曾经认为写作是数据科…

npm安装依赖包报错,npm ERR! code ENOTFOUND

一、报错现象: npm WARN registry Unexpected warning for https://registry.npmjs.org/: Miscellaneous Warning ETIMEDOUT: request to https://registry.npmjs.org/vue failed, reason: connect ETIMEDOUT 104.16.23.35:443 npm WARN registry Using stale data…

“点点通“餐饮点餐小程序-计算机毕业设计源码11264

"点点通"餐饮点餐小程序 XXX专业XX级XX班:XXX 指导教师:XXX 摘要 随着中国经济的飞速增长,消费者的智能化水平不断提高,许多智能手机和相关的软件正在得到更多的关注和支持。其中,微信的餐饮点餐小程序更…

《Exploring Aligned Complementary Image Pair for Blind Motion Deblurring》

这篇论文的标题《Exploring Aligned Complementary Image Pair for Blind Motion Deblurring》可以翻译为《探索对齐的互补图像对用于盲运动去模糊》。从标题可以推断,论文的焦点在于开发一种算法或技术,利用成对的图像来解决运动模糊问题,特别是在不知道模糊核(即造成模糊…

wifi preamble code, 前导码

WiFi packets 很神奇,自从802.11 协议诞生以来 就对信息传输 产生了无尽的影响, 闲来无事 看看wireless 空口包 发现 前导码 非常奇怪。 为什么前导码有两部分组成, 1. radiotap header 2. 802.11 radio information 并且 radiotap 是有在…

AIGC工具:IPAdapter和ControlNet 指导控制生成工具

ControlNet强调对生成过程的直接控制,如通过线条、边缘、形状等信息;而IPAdapter侧重于风格迁移和内容的间接引导。 IPAdapter 它专注于通过迁移图片风格来生成新的图像内容。IPAdapter的强项在于能够将一张图片的风格迁移到另一张图片上,实现风格融合,甚至可以进行多图风格…

CS110L(Rust)

1.Rust 语法总结 数值类型 有符号整数: i8, i16, i32, i64无符号整数: u8, u16, u32, u64 变量声明 声明变量: let i 0; // 类型推断let n: i32 1; // 显式类型声明 可变变量: let mut n 0; n n 1; 字符串 注意,let s: str "Hello world";…