当前位置:网站首页>JVM之方法返回地址
JVM之方法返回地址
2022-06-29 09:16:00 【Hao_JunJie】
一、存放的是调用者的pc寄存器的值:
二、一个方法的结束,有两种方式:
1.正常执行完成。
2出现未处理的异常,非正常退出。
三、无论通过那种方式退出,在方法退出后都返回到该方法被调用的位置。方法正常退出时,调用者的pc寄存器的值作为返回地址,即调用该方法的下一条指令的地址。而异常退出的,返回地址是通过异常表来确定,栈帧中一般不会保存这部分信息。
四、本质上,方法的退出就是当前栈帧出栈的过程,此时需要恢复上层方法的局部变量表,操作数栈,将返回值压入调用者的栈帧的操作数栈,设置pc寄存器值等,让调用者方法继续执行下去。
五。正常完成出口和异常完成出口的区别在于:通过异常完成出口退出的不会给他上层调用者产生任何的返回值。
六、方法退出的指令:
(1)正常退出:
a.执行引擎遇到任意一个方法返回的字节码指令(return),会有返回值传递给上层的方法调用者,简称正常完成出口。
b.类型:根须方法返回值的实际数据类型而定。
c.ireturn:返回值是boolean,byte,char,short,int
lreturn:返回值是 long.
dreturn:返回值是double。
freturn:返回值是flot
areturn:返回值是 引用类型
return:返回值是void.
(2)异常退出:
a.概念:在方法执行的过程中遇到了异常,并且这个异常没有在方法内进行处理,也就是只要在本方法的异常表中没有搜索到匹配的异常处理器,就会导致方法退出,简称异常完成出口。
b.例子:

在字节码 4-8行中遇到异常,用字节码11行的异常处理器进行处理。
边栏推荐
- Is it safe to open an account for stock speculation? Is it reliable?
- JS获取手机型号和系统版本
- Introduction to intranet penetration tool FRP
- Data governance: data standard management (Part III)
- 在Activity外使用startActivity()方法报错原因与解决办法
- RecyclerView刷新闪烁与删除Item时崩溃问题
- KDevelop new project
- 基于stm32标准库独立按键的多按键状态机的实现
- 【技术开发】酒精测试仪解决方案开发设计
- Deep Learning-based Automated Delineation of Head and Neck Malignant Lesions from PET Images
猜你喜欢

UE4 material UV texture does not stretch with model scale

阿里云防火墙配置,多种设置方式(iptables和fireward)

阿里云服务器安装配置redis,无法远程访问

装饰器模式的应用,包装ServletRequest,增加addParameter方法

力扣94二叉树的中序遍历

Automatic Multi-Organ SegmVentation on Abdominal CT With Dense V-Networks

Lc236. nearest common ancestor of binary tree

A 2.5D Cancer Segmentation for MRI Images Based on U-Net

Application of decorator mode, packaging ServletRequest and adding addparameter method

基于keil5自动配置stm32f103标准库的官网freertos移植
随机推荐
367. 有效的完全平方数-二分法
kdevelop新建工程
User level threads and kernel level threads
2020-09-21 Visual Studio头文件和库目录配置
leetcode MYSQL数据库题目176
动态规划总结
General part: cognition, design and best practice of prototype design
2020-09-29 非商品模板化代码层次 rapidjson库
【技术开发】酒精测试仪解决方案开发设计
ImageView图片填充问题
Do you know what BFD is? This article explains the principle and usage scenarios of BFD protocol in detail
2020-09-23左右值 右值引用 std::move()
F5 BIG-IP iControl REST命令执行(CVE-2022-1388)
Gmail:如何快速将邮件全部已读
1424. 对角线遍历 II
Gross Tumor Volume Segmentation for Head and Neck Cancer Radiotherapy using Deep Dense Multi-modalit
数据库常见面试题(附答案)
云管理平台:OpenStack架构设计及详细解读
我想要股票开户优惠,怎么得到?还有,在线开户安全么?
watch监听和computed计算属性的使用和区别