JVM栈帧结构及动态链接

news2024/11/24 2:14:17

1. 栈帧结构

附加信息(此处官网未具体说明,可忽略,参考图中结构理解即可):栈帧的高度,虚拟机版本信息

栈帧信息:附加信息+动态链接+方法的返回地址

局部变量表:方法中定义的局部变量以及方法的参数都会存放在这张表中 ,单纯的存储单元

操作数栈 以压栈以及出栈的方式存储操作数

举例:

int a = 1;

int b = 1;

int c = a + b ;

方法的返回地址:当你一个方法执行的时候,只有两种方式可以推出

1.遇到方法的返回的字节码指令

2.出现了异常,有异常处理器,则交给异常处理器 ,没有呢?抛异常

2. 动态链接

动态链接是为了支持方法的动态调用过程 。

动态链接将这些符号方法引用转换为具体的方法引用

符号引用转变为直接引用 为了支持java的多态。

方法A执行时才知道要执行B方法,B方法执行时才知道真实执行C方法,最终知道执行C方法。类加载时也需要符号引用转变为直接引用,但不知道具体执行C方法。所以此时需要动态链接。

void a(){

b();

}

void b(){

c();

}

void c(){

}

 

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

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

相关文章

基于flask的web应用开发——登录界面

目录 0. 前言1. request2. redirect3. 动态路由4. Jinja2代码实现 0. 前言 打算在云服务器上部署一个 TODO LIST 来练手,也就是一个代办事项提醒表。 本节学习使用 flask 库制作出一个登录界面,并且使用Redis数据库实现账号密码加载功能,关…

微信小程序登录的最佳实践

微信小程序登录的最佳实践 官方文档的介绍 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。 登录流程时序 说明 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。 调用 auth.co…

图解C++对象模型

C对象模型是什么 《深度探索C对象模型》这本书中对对象模型的描述如下: 有两个概念可以解释C对象模型: 语言中直接支持面向对象程序设计的部分。 对于各种支持的底层实现机制。 语言中直接支持面向对象程序设计的部分,包括了构造函数、析构函…

chatgpt赋能python:Python如何快速复制上一行?

Python 如何快速复制上一行? 在编写Python代码时,经常需要快速复制上一行代码进行修改。如果只是简单的手动复制粘贴,会造成不必要的时间浪费并且容易出错。本文将介绍三种快速复制上一行代码的方法。 方法一:使用快捷键 在Pyt…

chatgpt赋能python:Python如何拟合曲线

Python如何拟合曲线 拟合曲线是数据分析中常见的一种方法。Python作为一种强大的编程语言,具有丰富的数据分析库和拟合曲线的功能。本文将介绍如何在Python中使用numpy、matplotlib和scipy库进行曲线拟合。 numpy库 numpy是Python中常用的数值计算库。它提供了许…

Error系列-CVE CIS-2023系统漏洞处理方案集合

问题1: CVE-2023-29491 Type: OS涉及到的包:ncurses-dev,ncurses-libs,ncurses-terminfo-base描述:当前系统安装的ncurses,存在漏洞,当被setuid应用程序使用时,允许本地用户通过在$HOME/中找到的终端数据库…

Spring Cloud Alibaba - Sentinel(二)

目录 一、Sentinel 熔断降级简介 1、基本介绍 2、熔断策略 3、熔断规则 二、Sentinel熔断策略 1、慢调用比例 2、异常比例 3、 异常数 三、热点规则 1、热点规则 2、参数例外项 四、系统规则 1、Sentinel 系统规则 一、Sentinel 熔断降级简介 1、基本介绍 除了流…

Linux 手动部署 SpringBoot 项目

Linux 手动部署 SpringBoot 项目 1. 将项目打包成 jar 包 &#xff08;1&#xff09;引入插件 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></pl…

【Spring 项目的创建和使用】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 1. 创建 Spring 项目 2. 创建一个 普通 Maven…

chatgpt赋能python:Python如何更新pip

Python 如何更新 pip 在 Python 编程中&#xff0c;pip 是一个非常重要的工具&#xff0c;它可以帮助我们安装和管理 Python 包。然而&#xff0c;我们有时候会遇到 pip 版本过低&#xff0c;需要进行更新的情况。那么&#xff0c;如何更新 pip 呢&#xff1f; 什么是 pip p…

论文笔记(三十):Counter-Hypothetical Particle Filters for Single Object Pose Tracking

Counter-Hypothetical Particle Filters for Single Object Pose Tracking 文章概括摘要1. 简介II. 相关工作A. 机器人的物体姿态估计和跟踪B. 鲁棒性的粒子滤波 III. 背景&#xff1a;粒子滤波A. 粒子滤波B. 粒子剥夺和粒子重振IV. 反假设粒子滤波A. 反假设重取样B. 6D姿势估计…

记一次为学校流浪猫开发的小程序——航海之猫

某次刷朋友圈时&#xff0c;看到校园墙上有一个校园流浪猫救助组织在召集爱心人士加入工作小组。其中需要会做微信小程序的给学校里的猫猫做一个猫猫图鉴&#xff0c;于是就有了本次项目经历。 相关技术及工具 工具&#xff1a;Uniapp、XBuilder、微信官方开发者工具技术&…

chatgpt赋能python:Python如何把文件复制到另一个目录下

Python如何把文件复制到另一个目录下 作为一个有着10年Python编程经验的工程师&#xff0c;我可以告诉你&#xff0c;在Python编程中&#xff0c;复制文件是非常常见的任务之一。无论您是为了备份数据或将文件从一个地方传输到另一个地方&#xff0c;都需要使用文件复制操作。…

Linux中/dev/null和/dev/zero的作用

1./dev/null和/dev/zero介绍 在Linux环境中&#xff0c;我们会经常用到/dev/null和/dev/zero&#xff0c;今天为大家讲讲/dev/null和/dev/zero的作用以及使用场景。 1.1./dev/null介绍 linux中/dev/null&#xff0c;它是一种特殊的虚拟设备&#xff0c;用于写入而不是读取&a…

前端050_单点登录SSO_登录功能实现

登录功能实现 1、登录认证流程2、定义 Api 调用登录接口3、Vuex 登录信息状态管理4、提交登录触发 action5、测试1、登录认证流程 单点登录认证流程图 门户客户端要求登录时,输入用户名密码,认证客户端提交数据给认证服务器认证服务器校验用户名密码是否合法,合法响应用户…

RISC-V学习基础(六)

原子指令 RV32A有两种类型的原子操作&#xff1a; 内存原子操作&#xff08;AMO&#xff09;加载保留/条件存储&#xff08;load reserved/store conditional&#xff09; 图6.1是RV32A扩展指令集的示意图&#xff1a; 图6.2列出了它们的操作码和指令格式 AMO&#xff08;at…

chatgpt赋能python:Python如何更新包

Python如何更新包 Python是当今最流行的编程语言之一&#xff0c;它通过其丰富的生态系统和充足的工具库为许多开发者提供了便捷、快速、高效的开发体验。在Python的世界里&#xff0c;包是一种最重要的组件之一&#xff0c;因为它们可以让你轻松地扩展Python的功能&#xff0…

【跨域】如何解决跨域问题

同源策略 同源 相同协议相同域名相同端口 内容 浏览器的同源策略 - Web 安全 | MDN (mozilla.org) 浏览器页面向不同源的服务器发送ajax请求资源时&#xff0c;响应的数据会被浏览器拦截 意义 出于安全性的考虑&#xff0c;防止恶意获取数据 解决方案 JSONP 不使用aj…

Rust每日一练(Leetday0022) 最小路径和、有效数字、加一

目录 64. 最小路径和 Minimum Path Sum &#x1f31f;&#x1f31f; 65. 有效数字 Valid Number &#x1f31f;&#x1f31f;&#x1f31f; 66. 加一 Plus One &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 P…