JVM之方法返回地址

JVM之方法返回地址,第1张

JVM之方法返回地址

一、存放的是调用者的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行的异常处理器进行处理。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5637461.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存