1. 程式人生 > 其它 >第十篇 JVM之執行時資料區<6>: 方法返回

第十篇 JVM之執行時資料區<6>: 方法返回

方法返回地址(return Address)是棧幀的最後一塊區域,存放了呼叫該方法的程式計數器的值。

方法返回地址(return Address)是棧幀的最後一塊區域,存放了呼叫該方法的程式計數器的值。
方法的結束方式有兩種:

  • 1、正常結束

當執行引擎在執行位元組碼指令的過程,如果遇到方法返回的位元組碼指令,就會結束方法執行並將該棧幀運算元棧棧頂元素返回給呼叫者(除了void方法對應的return指令),並結束方法。方法返回指令包括ireturn(返回boolean、byte、short、int、char型別)、freturn、dreturn、areturn及return(void方法、構造器方法、類構造方法)

  • 2、異常結束

方法執行過程中遇到異常時,就會去該方法的異常表中查詢相應的異常處理器,如果沒有匹配到異常處理器,就會結束方法,並且不會返回任何資訊給上層方法。

  無論以那種方式結束,都要返回到呼叫該方法的上層方法的位置,方法正常退出時,會將上層方法呼叫該方法時程式計數器的值作為返回。異常退出時,返回地址要通過異常表來確定,棧幀通常不會儲存這部分資訊。本質上,方法的退出過程就是當前棧幀出棧的過程,此時,需要恢復上層方法的區域性變量表、運算元棧、程式計數器的值等,讓執行緒在方法呼叫處繼續執行下去。