jvm 6 Class位元組碼檔案結構總結

2021-07-10 19:19:47 字數 995 閱讀 1439

readme

0.1)本文總結於 clas位元組碼檔案,旨在理清 class位元組碼檔案的大體結構;

乾貨開始

對上圖的分析(analysis):

a1)offset=0

a2)offset=0xb0,儲存類索引+父類索引+介面索引

a3)offset=0xb6(查表6-8),儲存字段資訊

a4)offset=0xc0,儲存方法資訊(查表6-11)

a5)offset=0xd0,儲存code屬性的資訊,如下圖所示:

a6)後面我偷個懶,還有一些屬性的位元組碼表示:剛剛介紹了code屬性,接下來是 exceptions屬性,linenumbertable屬性,localvariabletable屬性,sourcefile屬性, constantvalue屬性, innerclass屬性, deprecated和synthetic屬性,stackmaptable屬性,signature屬性,和 bootstrapmethods 屬性等, 它們的截圖示例如下:

conconsion)總結下class位元組碼檔案格式的大致結構(排名分先後)(非常重要):

jvm 位元組碼執行流程

1 源 public class mytest 2 編譯後的位元組碼檔案 3 載入 1 常量池中的位元組碼載入到執行時常量池 2 方法的位元組碼載入到方法區 4 main執行緒開始執行,分配棧楨記憶體 1 棧記憶體的分配 區域性變數表 4 最大運算元棧的深度為 2 2 執行istore 1指令 將常...

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

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

位元組碼與常量池和JVM記憶體原理

1.jvm主要包括了圖中的三塊,分別是方法區,堆,以及執行緒獨有的區域。2.其中方法區中包括了類變數,類資訊,方法資訊以及常量池。1.常量池以表的形式存在 2.常量池用於儲存編譯期間生成的字面量和符號引用。值得注意的是,執行期間產生的新的常量也可被儲存到常量池中,例如string中的intern方法...