1. 程式人生 > >執行時棧幀結構

執行時棧幀結構

棧幀是用於支援虛擬機器進行方法呼叫和方法執行的資料結構

棧幀儲存了方法的區域性變量表,運算元棧,動態連線,方法返回地址等資訊,每一個方法從呼叫開始直至執行完成的過程都對應著一個棧幀從入棧到出棧的過程

區域性變數:

是一組變數值儲存空間,用於儲存方法引數和方法內部定義的區域性變數

最小單位:變數槽

第二點:在初始化階段程式設計師沒有為類變數進行賦值也沒有關係,類變數仍然具有一個確定的初始值,但區域性變數就不一樣,如果區域性變數定義了但卻沒有賦初值是不能使用的。

運算元棧

是一個後入先出棧,進行整數加法的位元組碼執行時,運算元棧中最接近棧頂的兩個元素已經存入了兩個int型的數值,當執行這個指令時,這兩個int值出棧,並相加,將結果入棧

動態連線

執行期間將符號引用轉化為直接引用

方法返回地址

方法退出的兩種方式:第一種方式是執行引擎遇到任意一個方法返回的位元組碼指令,這時候可能會有返回值傳遞給上層的方法呼叫者,這種退出方式是正常完成出口

另一種方式是,在方法執行過程中遇到了異常,並且這個異常沒有在方法體內得到處理,這種退出方式成為異常完成出口,一個方法使用異常完成出口的方式退出,是不會給它的上層呼叫者產生任何返回值的