class文件的大致結(jié)構(gòu)從前到后
名稱 | 用途 | 大小 | 補充說明 |
---|---|---|---|
魔數(shù) | (用來驗證是不是虛擬機合適的class文件 | 4字節(jié) | 因為后綴名可以隨意改動,所以使用魔數(shù)也是出于安全的考慮 |
版本號 | (用來標(biāo)識該class文件能夠在哪個版本jdk運行) | 4字節(jié) | 前2字節(jié)是次版本號,后2字節(jié)是主版本號 版本高的jdk可以加載版本低的class文件 |
常量池 | (class文件的資源倉庫) | 不定 | 主要存放字面量和符號引用,字面量就是文本字符串和申明為final的常量,符號引用包括了類和接口的全限定名,字段名稱和描述符。方法名稱和描述符,常量池的容量計數(shù)從1開始。因為常量池0的位置用來存儲常量池的容量 |
訪問標(biāo)志 | (定義是不是類,是不是public | 2字節(jié) | 就是判斷一個class的訪問標(biāo)志,是否final,是否public |
類索引 | 確定本類的全限定名 | 2字節(jié) | 無 |
父類索引 | 確定父類的全限定名 | 2字節(jié) | 無 |
接口索引計數(shù)器 | 統(tǒng)計接口的數(shù)量 | 2字節(jié) | 無 |
接口索引集合 | 接口們的全限定名 | 接口計數(shù)器*2 | 無 |
字段表集合 | 描述申明的變量包括類級變量實例變量不包括局部變量 | 不定 | 不會列出超類或父接口的繼承的字段 |
方法表集合 | 描述申明的方法包括訪問標(biāo)志,名稱索引,描述符索引,屬性表索引,屬性表集合 |
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/69625.html
摘要:對象創(chuàng)建與訪問指令雖然類實例和數(shù)組都是對象,但虛擬機對類實例和數(shù)組的創(chuàng)建和操作使用了不同的字節(jié)碼指令。異常處理指令在虛擬機中,處理異常語句不是由字節(jié)碼指令來實現(xiàn)的,而是采用異常表的方式。 《深入理解Java虛擬機:JVM高級特性與最佳實踐(第二版》讀書筆記與常見面試題總結(jié) 本節(jié)常見面試題(推薦帶著問題閱讀,問題答案在文中都有提到): 簡單介紹一下Class類文件結(jié)構(gòu)(常量池主要存放的是...
摘要:對一個文件的字節(jié)碼進行逐行的分析是理解文件結(jié)構(gòu)的最佳方式。本文的目的在于盡可能完整地拆解的字節(jié)碼并將其分塊分析,最終得到的圖解結(jié)構(gòu)希望可以幫助到你。字節(jié)碼指令的具體含義鑒于與結(jié)構(gòu)是相對獨立的主題不再詳述,后續(xù)會再單獨深入介紹。 對一個class文件的字節(jié)碼進行逐行的分析是理解class文件結(jié)構(gòu)的最佳方式。但是往往復(fù)雜的二進制字節(jié)碼會讓人望而卻步,或者只有仔細一點點盯著才能保證不花眼。本...
摘要:在屬性中,和分別用于存儲字節(jié)碼長度和字節(jié)碼指令,每條指令即一個字節(jié)類型。在虛擬機執(zhí)行時,通過讀取中的一個個字節(jié)碼,并將字節(jié)碼翻譯成相應(yīng)的指令。另外,雖然是一個類型的值,但是實際上一個方法不允許超過條字節(jié)碼指令。 最近在寫一個私人項目,名字叫做SmallVM,SmallVM的目的在于通過實現(xiàn)一個輕量級的Java虛擬機,加深對Java虛擬機的認知和理解。在Java虛擬機加載類的過程中,需要...
摘要:在屬性中,和分別用于存儲字節(jié)碼長度和字節(jié)碼指令,每條指令即一個字節(jié)類型。在虛擬機執(zhí)行時,通過讀取中的一個個字節(jié)碼,并將字節(jié)碼翻譯成相應(yīng)的指令。另外,雖然是一個類型的值,但是實際上一個方法不允許超過條字節(jié)碼指令。 最近在寫一個私人項目,名字叫做ClassAnalyzer,ClassAnalyzer的目的是能讓我們對Java Class文件的設(shè)計與結(jié)構(gòu)能夠有一個深入的理解。主體框架與基本功...
摘要:類文件的結(jié)構(gòu)文件是一組以位字節(jié)為基礎(chǔ)單位的二進制流,各個數(shù)據(jù)項目嚴格按照順序緊湊地排列在文件之中,中間沒有添加任何分隔符,這使得整個文件中存儲的內(nèi)容幾乎全部是程序運行的必要數(shù)據(jù),沒有空隙存在。 點擊進入我的博客 4.1 字節(jié)碼 平臺無關(guān):Sun公司以及其他的虛擬機提供商發(fā)布了許多可以運行在各種不同平臺上的虛擬機,這些虛擬機都可以載入和執(zhí)行同一種平臺無關(guān)的字節(jié)碼,從而實現(xiàn)了程序的一次編...
閱讀 1891·2021-11-11 16:55
閱讀 2095·2021-10-08 10:13
閱讀 752·2019-08-30 11:01
閱讀 2163·2019-08-29 13:19
閱讀 3288·2019-08-28 18:18
閱讀 2626·2019-08-26 13:26
閱讀 586·2019-08-26 11:40
閱讀 1877·2019-08-23 17:17