当前位置: 首页 > news >正文

JVM(HotSpot):程序计数器(Program Counter Register)

文章目录

  • 一、内存结构图
  • 二、案例解读
  • 三、工作流程
  • 四、特点

一、内存结构图

在这里插入图片描述

二、案例解读

我们使用javap对字节码进行反编译,来看下程序计数器怎么体现的。

IDEA写一个简单的Java代码
在这里插入图片描述
反编译命令
javap -verbose InitTest.class

$ javap -verbose InitTest.class
Classfile /E:/workspace/JVMDemo/out/production/chapter01/com/rh/java/InitTest.classLast modified 2024-9-23; size 491 bytesMD5 checksum 56fd724ef01f37a20b2872002edd43cdCompiled from "InitTest.java"
public class com.rh.java.InitTestminor version: 0major version: 52flags: ACC_PUBLIC, ACC_SUPER
Constant pool:#1 = Methodref          #4.#23         // java/lang/Object."<init>":()V#2 = Fieldref           #3.#24         // com/rh/java/InitTest.a:I#3 = Class              #25            // com/rh/java/InitTest#4 = Class              #26            // java/lang/Object#5 = Utf8               a#6 = Utf8               I#7 = Utf8               <init>#8 = Utf8               ()V#9 = Utf8               Code#10 = Utf8               LineNumberTable#11 = Utf8               LocalVariableTable#12 = Utf8               this#13 = Utf8               Lcom/rh/java/InitTest;#14 = Utf8               main#15 = Utf8               ([Ljava/lang/String;)V#16 = Utf8               args#17 = Utf8               [Ljava/lang/String;#18 = Utf8               i#19 = Utf8               j#20 = Utf8               k#21 = Utf8               SourceFile#22 = Utf8               InitTest.java#23 = NameAndType        #7:#8          // "<init>":()V#24 = NameAndType        #5:#6          // a:I#25 = Utf8               com/rh/java/InitTest#26 = Utf8               java/lang/Object
{public int a;descriptor: Iflags: ACC_PUBLICpublic com.rh.java.InitTest();descriptor: ()Vflags: ACC_PUBLICCode:stack=2, locals=1, args_size=10: aload_01: invokespecial #1                  // Method java/lang/Object."<init>":()V4: aload_05: bipush        87: putfield      #2                  // Field a:I10: returnLineNumberTable:line 3: 0line 4: 4LocalVariableTable:Start  Length  Slot  Name   Signature0      11     0  this   Lcom/rh/java/InitTest;public static void main(java.lang.String[]);descriptor: ([Ljava/lang/String;)Vflags: ACC_PUBLIC, ACC_STATICCode:stack=2, locals=4, args_size=10: bipush        102: istore_13: bipush        205: istore_26: iload_17: iload_28: iadd9: istore_310: returnLineNumberTable:line 7: 0line 8: 3line 9: 6line 10: 10LocalVariableTable:Start  Length  Slot  Name   Signature0      11     0  args   [Ljava/lang/String;3       8     1     i   I6       5     2     j   I10       1     3     k   I
}
SourceFile: "InitTest.java"

类似下图,最左边的序号,我们可以简单的理解为jvm指令的内存地址。
在这里插入图片描述

三、工作流程

Java程序的运行流程大概如下
解释器,通过程序计数器,拿到指令的内存地址,从而获取到需要执行的指令
然后,解释器把指令翻译成机器码,CPU才能执行对应的机器码。
简单的理解为,当前程序运行到哪一行代码,就看程序计数器记录的指令地址。

而在物理硬件上,程序计数器是通过什么实现的了?
是通过CPU中的寄存器部分实现的效果,寄存器是CPU中运行速度最快的部分。

四、特点

1、线程私有的
每个线程都会有个属于自己的程序计数器。

2、不会存在内存溢出异常

相关文章:

JVM(HotSpot):程序计数器(Program Counter Register)

文章目录 一、内存结构图二、案例解读三、工作流程四、特点 一、内存结构图 二、案例解读 我们使用javap对字节码进行反编译&#xff0c;来看下程序计数器怎么体现的。 IDEA写一个简单的Java代码 反编译命令 javap -verbose InitTest.class $ javap -verbose InitTest.clas…...

等保托管怎么样,流程是什么样的?

随着信息技术的快速发展&#xff0c;网络安全问题愈发凸显。为了保护信息系统的安全&#xff0c;国家推出了网络安全等级保护制度&#xff08;简称“等保”&#xff09;&#xff0c;企业在面对这一制度的同时&#xff0c;也逐渐意识到等保托管的重要性。等保托管旨在通过专业的…...

【HTML】img标签和超链接标签

文章目录 img 标签src 属性alt 属性title 属性width/height 属性border 属性 超链接标签&#xff1a;a表格标签合并单元格 img 标签 img 是一个单标签 src 属性 img 标签必须搭配 src 使用&#xff08;指定图片的路径&#xff09; 相对路径&#xff1a; ./xxx.png./img/xxx.…...

智能PPT行业赋能用户画像

智能PPT市场在巨大的需求前景下&#xff0c;已吸引一批不同类型的玩家投入参与竞争。从参与玩家类型来看&#xff0c;不乏各类与PPT创作有关的上下游企业逐步向智能PPT赛道转型进入&#xff0c;也包括顺应生成式AI技术热潮所推出的创业企业玩家。当前&#xff0c;智能PPT赛道发…...

学习C++的第七天!

1.虚函数是在基类中用 virtual 关键字声明的函数&#xff0c;可以在派生类中被重写。纯虚函数是在虚函数的基础上&#xff0c;在基类中被初始化为 0 的函数&#xff0c;含有纯虚函数的类是抽象类&#xff0c;不能被实例化。 2.如果基类的析构函数不是虚函数&#xff0c;当通过…...

Java编程必备:五大高效工具与框架

作为一位Java程序员&#xff0c;在编写Java代码时&#xff0c;通常会使用多种工具和框架来提高开发效率、保证代码质量并简化开发流程。以下是五个常用的Java程序员工具和框架及其简要说明&#xff1a; 1. IntelliJ IDEA 主要功能&#xff1a;IntelliJ IDEA是一个强大的Java集…...

现代桌面UI框架科普及WPF入门1

现代桌面UI框架科普及WPF入门 文章目录 现代桌面UI框架科普及WPF入门桌面应用程序框架介绍过时的UI框架MFC (Microsoft Foundation Class)缺点 经典的UI框架**WinForms****QT****WPF** 未来的UI框架**MAUI****AvaloniaUI** WPF相对于Winform&#xff0c;QT&#xff0c;MFC的独立…...

in和like性能对比

场景: 有个问题表,有个渠道表,问题和渠道的关系是一对多 需要根据渠道查询问题,暂时两种思路 1:问题表荣誉渠道id,多个id拼接 2:设计问题和渠道关联关系表 首先,这两种是常用的设计思路,那么查询谁的速度快 问题表:造10w数据,渠道表造100条数据 结论 实测10次后,发现like耗…...

Redis|基础学习

跟着狂神学习的Redis笔记&#xff0c;详细课程可以移步【狂神说Java】Redis最新超详细版教程通俗易懂 文章目录 NoSQLNoSQL 数据库的主要类型NoSQL 的特点NoSQL 的应用场景 Redis什么是 RedisRedis 能干嘛Windows 以及 Linux 下安装 RedisRedis 基本知识RedisKey的基本命令Redi…...

手把手教你在Linux上构建Electron

开发electron最大的特点就是可以使用web技术来开发跨平台应用&#xff0c;大部分开发都是在windows/mac上开发的electron应用&#xff0c;我使用的是electorn-builder来构建应用&#xff0c;官网提供支持在windows上使用docker来实现Linux版本的构建。可以直接在Linux服务器上完…...

力扣【448-消失的数字】【数组-C语言】

题目&#xff1a;力扣-448 给你一个含 n 个整数的数组 nums &#xff0c;其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字&#xff0c;并以数组的形式返回结果。 把数组中存在[1…n]的元素放其元素值-1的位置上&#xff0c;第一个fo…...

面试题:排序算法的稳定性?(文末有福利)

回归面试题&#xff01; 回答重点 稳定的排序算法&#xff1a;冒泡排序、插入排序、归并排序、计数排序。 不稳定的排序算法&#xff1a;选择排序、快速排序、堆排序、希尔排序。 扩展知识 1&#xff09;冒泡排序&#xff08;Bubble Sort&#xff09; 原理&#xff1a; 冒…...

在Jdk1.8中Collectors和Comparator使用场景

在Jdk1.8中Collectors和Comparator使用场景 ​Collectors​ 和 Comparator​ 是 Java 8 引入的两个非常重要的类&#xff0c;它们在处理集合和流&#xff08;Streams&#xff09;时起着重要的作用。以下是这两个类的使用场景以及它们的典型用法。 1. Collectors ​Collector…...

linux-性能优化命令

top 我们先来说说top命令用法&#xff0c;这个命令对于我们监控linux性能是至关重要的&#xff0c;我们先来看看展示结果。 top - 15:20:23 up 10 min, 2 users, load average: 0.39, 0.53, 0.35 Tasks: 217 total, 1 running, 216 sleeping, 0 stopped, 0 zombie %C…...

基于MT79815G CPE 板子上挂usb3.0的5G 模块,WIFI能跑多少速度呢

关于MT79815G CPE 板子上挂usb3.0的5G 模块&#xff0c;WIFI能跑多少速度的问题&#xff0c;我们以启明智显 ZX7981P智能无线接入型路由器&#xff08;CPE&#xff09;挂广合通5G模组为例说明&#xff1a; 一般来说&#xff0c;用 ZX7981P&#xff0c;通过软加速&#xff0c;U…...

R包compareGroups详细用法

compareGroups compareGroups 是一个功能强大的 R 包&#xff0c;专为数据质量控制、数据探索和生成用于出版的单变量或双变量表格而设计。它能够创建各种格式的报表&#xff0c;如纯文本、HTML、LaTeX、PDF、Word 或 Excel 格式&#xff0c;并显示统计数据&#xff08;均值、…...

如何选择高品质SD卡

如何选择高品质SD卡 SD卡&#xff08;Secure Digital Memory Card&#xff09;是一种广泛使用的存储器件&#xff0c;因其快速的数据传输速度、可热插拔的特性以及较大的存储容量&#xff0c;广泛应用于各种场景&#xff0c;例如在便携式设备如智能手机、平板电脑、运动相机等…...

C++学习:模拟priority_queue

一&#xff1a;仿函数 开始模拟前咱先了解一下仿函数。有了它&#xff0c;我们就可以自己传个代码让优先级队列升序还是降序&#xff0c;自己模拟时也不用在需要升序降序时改代码。这是个很有用的东西。 不写模版也可以&#xff0c;但模版能用在更多地方嘛 template <class …...

同程旅行对标拼多多:“形似神不似”

文&#xff1a;互联网江湖 作者&#xff1a;刘致呈 业绩好&#xff0c;并不意味着同程旅行就能高枕无忧了。 最近&#xff0c;媒体曝出&#xff1a;有用户在同程旅行APP上预订酒店&#xff0c;在预订成功并付款后&#xff0c;结果第二天却被酒店告知&#xff0c;没有查到相关…...

HOJ网站开启https访问 申请免费SSL证书 部署证书详细操作指南

https://console.cloud.tencent.com/ 腾讯云用户 登录控制台 右上角搜SSL 点击 SSL证书 进入链接 点申请 免费证书 有效期3个月 &#xff08;以后每三个月申请一次证书 上传&#xff09; 如果是腾讯云申请的域名 选 自动DNS验证 自动添加验证记录 如果是其他平台申请域…...

Mermaid Live Editor:代码驱动图表的革新者,重新定义技术可视化流程

Mermaid Live Editor&#xff1a;代码驱动图表的革新者&#xff0c;重新定义技术可视化流程 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trendin…...

企业级低代码平台JeecgBoot快速搭建指南:从环境配置到实战应用

企业级低代码平台JeecgBoot快速搭建指南&#xff1a;从环境配置到实战应用 【免费下载链接】jeecg-boot 一款 AI 驱动的低代码平台&#xff0c;提供"零代码"与"代码生成"双模式——零代码模式一句话搭建系统&#xff0c;代码生成模式自动输出前后端代码与建…...

Fun-ASR语音识别新手入门:3步启动Web服务,麦克风实时转文字实测

Fun-ASR语音识别新手入门&#xff1a;3步启动Web服务&#xff0c;麦克风实时转文字实测 1. 快速认识Fun-ASR Fun-ASR是由钉钉与通义实验室联合推出的语音识别系统&#xff0c;专为中文场景优化设计。与市面上常见的云端语音识别服务不同&#xff0c;它最大的特点是支持本地化…...

基于SpringBoot+Vue的月度员工绩效考核管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 现代企业管理中&#xff0c;绩效考核是提升员工工作效率、优化人力资源配置的重要手段。传统的绩效考核多依赖纸质记录或简单的电子表格&#xff0c;存在数据易丢失、统计效率低、反馈周期长等问题。随着信息化技术的发展&#xff0c;企业亟需一套高效、精准的绩效考核管理…...

小白也能玩转GLM-4V-9B:免费开源多模态模型部署全流程

小白也能玩转GLM-4V-9B&#xff1a;免费开源多模态模型部署全流程 1. 环境准备与快速部署 1.1 硬件要求与系统配置 GLM-4V-9B作为90亿参数的多模态模型&#xff0c;对硬件有一定要求&#xff1a; GPU推荐&#xff1a;至少24GB显存的显卡&#xff08;如RTX 4090&#xff09;…...

Qwen2.5-14B-Instruct多轮记忆|像素剧本圣殿长剧本连贯性保障机制

Qwen2.5-14B-Instruct多轮记忆&#xff5c;像素剧本圣殿长剧本连贯性保障机制 1. 专业剧本创作的新范式 在创意写作领域&#xff0c;剧本创作一直面临着角色一致性、情节连贯性和风格统一性的挑战。传统创作工具往往只能提供片段式的辅助&#xff0c;而"像素剧本圣殿&qu…...

DanKoe 视频笔记:每日60分钟改变生活:引言与概述

在本教程中&#xff0c;我们将学习如何通过每天投入60分钟来系统地改变生活。我们将探讨常规的重要性&#xff0c;并介绍三个核心习惯&#xff0c;帮助你重新掌控精力、提升财务状况、改善健康以及获得内心的清晰。 每日60分钟改变生活&#xff1a;2&#xff1a;常规的必要性 …...

从CPU到内存:用74LS74芯片手把手教你搭建一个D边沿触发器(附波形图分析)

从面包板到示波器&#xff1a;用74LS74芯片实战D边沿触发器的完整指南 当你第一次在数字电路课本上看到"D边沿触发器"这个词时&#xff0c;是否感觉它像是一个抽象的黑盒子&#xff1f;教科书上的真值表和波形图虽然精确&#xff0c;但总缺少那么一点"触手可及&…...

如何用Captum实现多任务学习解释:复杂模型的归因策略终极指南

如何用Captum实现多任务学习解释&#xff1a;复杂模型的归因策略终极指南 【免费下载链接】captum Model interpretability and understanding for PyTorch 项目地址: https://gitcode.com/gh_mirrors/ca/captum Captum是一个基于PyTorch的模型可解释性库&#xff0c;专…...

告别Transformer的O(n²)烦恼:手把手带你用Mamba-2.0搭建一个长文本摘要模型

突破长文本处理瓶颈&#xff1a;基于Mamba-2.0的高效摘要系统实战指南 在当今信息爆炸的时代&#xff0c;我们每天都被海量文本内容包围——从学术论文、技术文档到商业报告&#xff0c;这些长文本的有效处理已成为知识工作者面临的核心挑战。传统基于Transformer的摘要系统虽然…...