JVM 8 虛擬機器位元組碼執行引擎

2021-09-24 08:15:20 字數 1350 閱讀 1745

在活動執行緒中,只有棧頂的棧時有效的,稱為當前棧幀,與這個棧幀相關聯的方法稱為當前方法。下面對棧幀的4個主要部分進行分析。

存放方法引數和方法內部定義的區域性變數

一些細節:

優點:可移植性、**更加緊湊、編譯器實現更緊湊。確定就是速度更慢。

指向執行時常量池中該棧幀所屬方法的引用,這個引用的為了支援方法呼叫過程的動態連線。具體內容在下面的方法呼叫中解釋。

方法退出(也就是當前棧幀出棧)的兩種方式:

方法呼叫不等同於方法的執行,方法呼叫階段唯一的任務就是確定被呼叫方法的版本。說白了就是找方法,方法唯一就直接確定(解析)。方法不唯一:過載(靜態分配)、重寫(動態分配)

human man = new man();

human是靜態型別(外觀型別),man是實際型別

依賴靜態型別來定位方法執行的版本的分配動作稱為靜態分配。最典型的應用是方法過載。

依賴實際型別來定位方法執行的版本的分配動作稱為動態分配。最典型的應用是方法重寫。

乙個測試例子:

public

class

mixtest

static

class

manextends

human

{} static

class

woman

extends

human

{} public

static

class

father

public

void

choice

(man arg)

public

void

choice

(woman arg)

}public

static

class

sonextends

father

public

void

choice

(man arg)

public

void

choice

(woman arg)

}public

static

void

main

(string args)

}/* 程式輸出:

father choose human

son choose man

*/複製**

JVM之虛擬機器位元組碼執行引擎

執行時棧幀結構 棧幀儲存方法的區域性變數表 運算元棧 動態鏈結和方法返回位址等,每乙個方法由開始到結束,都對應著乙個棧幀在虛擬機器裡面的出棧入棧過程。對於執行引擎來說,在活動的執行緒中,只有位於棧頂的棧幀才有效,叫做當前棧幀,與這個棧幀相關聯的方法叫做當前方法。區域性變數表 是一組變數值儲存空間,存...

虛擬機器位元組碼執行引擎

1.概述 虛擬機器 是乙個相對於 物理機 的概念,這兩種機器都有 執行能力,其區別是物理機的執行引擎是直接建立在處理器 硬體 指令集和作業系統層面上的,而虛擬機器的執行引擎是自己實現的,因此可以自行制定指令集與執行引擎的結構體系,並且能夠執行那些不被硬體直接支援的指令集格式。2.執行時棧幀結構 棧幀...

java 虛擬機器位元組碼執行引擎

一 執行時棧幀結構 棧幀分配多少記憶體,與執行時無關 1 區域性變數表 容量以slot 槽為單位 乙個slot 占用32位長度的記憶體空間,可以存的型別有boolean byte char short int float reference retuanaddress 二個slot 可以存long ...