zoukankan      html  css  js  c++  java
  • 第十篇 JVM之运行时数据区<6>: 方法返回

    方法返回地址(return Address)是栈帧的最后一块区域,存放了调用该方法的程序计数器的值。
    方法的结束方式有两种:

    • 1、正常结束

    当执行引擎在执行字节码指令的过程,如果遇到方法返回的字节码指令,就会结束方法执行并将该栈帧操作数栈栈顶元素返回给调用者(除了void方法对应的return指令),并结束方法。方法返回指令包括ireturn(返回boolean、byte、short、int、char类型)、freturn、dreturn、areturn及return(void方法、构造器方法、类构造方法)

    • 2、异常结束

    方法执行过程中遇到异常时,就会去该方法的异常表中查找相应的异常处理器,如果没有匹配到异常处理器,就会结束方法,并且不会返回任何信息给上层方法。

      无论以那种方式结束,都要返回到调用该方法的上层方法的位置,方法正常退出时,会将上层方法调用该方法时程序计数器的值作为返回。异常退出时,返回地址要通过异常表来确定,栈帧通常不会保存这部分信息。本质上,方法的退出过程就是当前栈帧出栈的过程,此时,需要恢复上层方法的局部变量表、操作数栈、程序计数器的值等,让线程在方法调用处继续执行下去。

  • 相关阅读:
    SPOJ NSUBSTR
    一点对后缀自动机的理解 及模板
    HDU 1086 You can Solve a Geometry Problem too
    HDU2036 改革春风吹满地
    POJ 2318 TOYS
    [HNOI2008]玩具装箱TOY
    HDU 3507 Print Article
    洛谷 P1231 教辅的组成(网络最大流+拆点加源加汇)
    P3984 高兴的津津
    P2756 飞行员配对方案问题(网络流24题之一)
  • 原文地址:https://www.cnblogs.com/zhexuejun/p/15631059.html
Copyright © 2011-2022 走看看