24.JVM栈帧的内部结构-方法返回地址和一些附加信息

本文详细解析了JVM中方法返回地址的作用及存储位置,解释了正常执行与异常退出的区别,以及如何通过字节码中的指令进行处理。

1.方法返回地址

1.存放调用该方法的PC寄存器的值。也就是存放下一条要执行的指令的地址。
2.方法正常执行完成,栈帧在出栈之前,会把方法返回地址返回给调用者,调用者就知道了下面应该执行什么指令。
3.如果方法是通过异常退出,则栈帧中不会包含方法返回地址,方法返回地址需要通过异常表来确定。
在这里插入图片描述
4.一个方法执行完成正常退出,字节码中会存在return指令。根据方法返回值类型的不同,会有ireturnfreturn(返回值类型为float时),drerurnareturn(返回值类型为引用类型时)。
在这里插入图片描述
5.异常退出,根据字节码中的方法返回表做处理。
在这里插入图片描述
6.方法退出,需要恢复上层方法的局部变量表,操作数栈、设置PC寄存器的值等。
7.正常退出与异常退出的区别在于:异常退出不会给它的上层调用者产生任何的返回值。
在这里插入图片描述

2.一些附加信息(了解)

在这里插入图片描述

更多JVM文章请访问我的JVM专栏:
https://blog.csdn.net/u011069294/category_10113093.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值