运行时内存数据区之虚拟机栈——动态链接、方法返回地址与一些附加信息

news2025/1/24 11:47:51

动态链接(Dynamic Linking)——指向运行时常量池的方法引用

  • 每一个栈帧内部都包含一个指向运行时常量池中该栈帧所属方法的引用。包含这个引用的目的就是为了支持当前方法的代码能够实现动态链接(Dynamic Linking)。比如:invokedynamic指令。
  • 在Java源文件被编译到字节码文件中时,所有的变量和方法引用都作为符号引用(Symbolic Reference)保存在class文件的常量池里。比如:描述一个方法调用了另外的其他方法时,就是通过常量池中指向方法的符号引用来表示的,那么动态链接的作用就是为了将这些符号引用转换为调用方法的直接引用。

方法返回地址(Return Address)

存放调用该方法的pc寄存器的值。

一个方法的结束,有两种方式:

  • 正常执行完成
  • 出现未处理的异常,非正常退出

无论通过哪种方式退出,在方法退出后都返回到该方法被调用的位置。方法正常退出时,调用者的pc计数器的值作为返回地址,即调用该方法的指令的下一条指令的地址。而通过异常退出的,返回地址是要通过异常表来确定,栈帧中一般不会保存这部分信息。

本质上,方法的退出就是当前栈帧出栈的过程。此时,需要恢复上层方法的局部变量表、操作数栈、将返回值压入调用者栈帧的操作数栈、设置PC寄存器值等,让调用者方法继续执行下去。

正常完成出口和异常完成出口的区别在于:通过异常完成出口退出的不会给他的上层调用者产生任何的返回值。

当一个方法开始执行后,只有两种方式可以退出这个方法:

  1. 执行引擎遇到任意一个方法返回的字节码指令(return),会有返回值传递给上层的方法调用者,简称正常完成出口:
    1. 一个方法在正常调用完成之后究竟需要使用哪一个返回指令还需要根据方法返回值的实际数据类型而定。
    2. 在字节码指令中,返回指令包含ireturn(当返回值是boolean、byte、char、short和int类型时使用)、lreturn、freturn、dreturn以及areturn,外还有一个return指令供声明为void的方法、实例初始化方法、类和接口的初始化方法使用。
  1. 在方法执行的过程中遇到了异常(Exception),并且这个异常没有在方法内进行处理,也就是只要在本方法的异常表中没有搜索到匹配的异常处理器,就会导致方法退出。简称异常完成出口。

方法执行过程中抛出异常时的异常处理,存储在一个异常处理表,方便在发生异常的时候找到处理异常的代码。

javap -v指令显示结果如下:

一些附加信息

栈帧中还允许携带与Java虚拟机实现相关的一些附加信息。例如对程序调试提供支持的信息。

至此,我们的虚拟机栈之旅结束,看到这里的小伙伴一定收获满满吧!

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

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

相关文章

算法 DAY24 回溯 || 第77题. 组合 216.组合总和III 17.电话号码的字母组合 39. 组合总和

前置知识 回溯算法模板框架如下:void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯&am…

rk3568点亮LCD(lvds)

rk3568 Android11/12 适配 lvds 屏 LVDS(Low Voltage Differential Signal)即低电压差分信号。1994年由美国国家半导体(NS)公司为克服以TTL电平方式传输宽带高码率数据时功耗大、电磁干扰大等缺点而研制的一种数字视频信号传输方…

堆的实现

思维导图 堆的概念 普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事…

【LeetCode】剑指 Offer 50. 第一个只出现一次的字符 p243 -- Java Version

题目链接:https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/ 1. 题目介绍(50. 第一个只出现一次的字符) 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 【测…

al文章生成-文章生成工具

ai文章生成器 AI文章生成器是一种利用人工智能和自然语言处理技术生成文章的工具。它使用先进的算法、机器学习和深度学习技术,深度挖掘和提取大量数据背后的信息,自主学习并合并新的信息,生成优质、原创的文章。 使用AI文章生成器的优点如下…

liunx mysql 主从同步设置 关键点

主库MySQL配置文件:该配置文件默认是在 /etc/my.cnf [mysqld] max_allowed_packet256M server-id1 log-binmysql-bin replicate-do-dbweb auto_increment_increment2 auto_increment_offset1 binlog_ignore_dbsys general_logon general_log_file/v…

Qt下载以及调试

1.概念 Qt是一个跨平台的基于C图形用户界面应用程序框架。 常见GUI: Qt:支持多平台;支持css;面向对象特性体现突出;发展趋势良好; MFC:仅在Windows;运行程序效率高;库安…

外包干了四年,感觉废了..

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

如何利用ventoy制作Linux to go (把deepin放到U盘里)

准备工作 最新版本 – 深度科技社区 (deepin.org) deepin镜像官方下载即可 Releases ventoy/vtoyboot GitHub ventoy启动插件选择1.0.29版本 Downloads – Oracle VM VirtualBox VirtualBox虚拟机官网 ventoy下载 VentoyRelease (lanzoui.com) 选择下载1.0.29版本 vento…

表格软件界的卷王,Excel、access、foxpro全靠边,WPS:真荣幸

Excel和Access就是表格软件的选择? 现在,铺天盖地的Excel的技能教程可谓是满天飞,有网上的教程,也有视频直播课程。 很多办公人员用Excel这种表格软件与VBA结合,甚至用不遗余力去学习Python编程语法,但Exce…

2023年会计师事务所研究报告

第一章 行业发展概况 1.1 行业概况 会计师事务所是专门从事财务、税务等领域的专业服务机构,其服务范围涵盖了审计、会计、税务、咨询等多个方面。 近年来,随着全球经济的不断发展和国际贸易的增加,会计师事务所行业也得到了快速发展。据统…

G8期刊《全体育》期刊简介及投稿要求

G8期刊《全体育》期刊简介及投稿要求 《全体育》是由湖南体育产业集团有限公司主管、体坛传媒集团股份有限公司主办、中教体育 出版发行的体育综合性期刊。 主管:湖南体育产业集团有限公司 主办:体坛传媒集团股份有限公司 国内刊号:CN4…

「实战教程」如何使用POI读取模板PPT填充数据并拼接至目标文件

文章目录一、PPT文件格式介绍1、PPT文件格式的概述2、HSLF和XSLF的区别3、如何选择合适的POI类库二、SlideShow三、读取PPT文件1. 加载PPT文件2. 获取PPT文件中的幻灯片3. 获取幻灯片中的形状元素四、修改PPT文件内容1. 幻灯片操作1.1 新增幻灯片1.2 删除幻灯片1.3 移动幻灯片1…

MySQL中count(1)和count(*)哪个性能好?

当我们对某一张表中的数据需要统计数量的时候,我们通常会用到count(1)、count(*)或者count(字段),而这三种哪个方式的count效率最高呢?先来说结论: count(1) count(*) > count(字段) 为什么会得到如上的结论,下面来…

xilinx FPGA FIFO IP核的使用(VHDLISE)

1.新建工程和ip核文件 下图显示了一个典型的写操作。拉高WR_EN,导致在WR_CLK的下一个上升边缘发生写入操作。因为FIFO未满,所以WR_ACK输出1,确认成功的写入操作。当只有一个附加的单词可以写入FIFO时,FIFO会拉高ALMOST_FULL标志。…

图数据结构与算法

什么是图数据的结构 图是由顶点和边组成的非线性数据结构。顶点有时也称为节点,边是连接图中任意两个节点的线或弧。更正式地说,图由一组顶点 ( V ) 和一组边 ( E ) 组成。该图由 G(E, V) 表示。 图的组成部分 顶点:顶点是图的基本单位。有时,顶点也称为顶点或节点。每个节…

私有化部署VideoTogether一起看视频

本文折腾始于 2022 年 9 月,但因为种种原因并未写完,最近,因为有朋友需要,又重新开始捡了起来,然而,我发现官方已经把私有化部署的相关文档删了,原因不得而知。 什么是 VideoTogether ? VideoT…

拥抱自动化测试,快速升职加薪丄Selenium+Pytest自动化测试框架教你如何做到

目录:导读 引言 SeleniumPytest自动化测试框架是目前最流行的自动化测试工具之一,其强大的功能和易用性援助许多开发人员和测试人员。 selenium自动化 pytest测试框架禅道实战 选用的测试网址为我电脑本地搭建的禅道 conftest.py更改 config.ini更…

【权限维持】域控后门SSPHOOKDSRMSID万能钥匙

文章目录内网域-权限维持-基于验证DLL加载-SSP方法一:但如果域控制器重启,被注入内存的伪造的SSP将会丢失。方法二:使用此方法即使系统重启,也不会影响到持久化的效果。使用总结内网域-权限维持-基于验证DLL加载-HOOK方法一&#…

esxi的安装配置以及新建虚拟机

esxi的安装配置以及新建虚拟机1_esxi的安装1.1_镜像下载1.2_启动盘制作1.3_安装教程1.3.1_进入Bios Manager选择使用U盘启动1.3.2_配置esxi(主要是配置网络)1.3.3_远程连接(直接在电脑上输入ip地址登录即可)2_新建虚拟机装操作系统…