第七章虛擬機(jī)類加載機(jī)制

類加載過(guò)程---驗(yàn)證

目的:
為了保證class文件中字節(jié)流包含的信息符合java虛擬機(jī)的要求。

四個(gè)階段驗(yàn)證:
1 文件格式驗(yàn)證
目的:確保class文件格式的規(guī)范。
確保輸入的字節(jié)流正確解析,并存儲(chǔ)于方法區(qū)之內(nèi)。所以此階段是基于二進(jìn)制字節(jié)流進(jìn)行的。而后面的三個(gè)驗(yàn)證階段,全部是基于方法區(qū)的存儲(chǔ)結(jié)構(gòu)進(jìn)行的。

比如:驗(yàn)證魔數(shù),主次版本,常量類型等

2 元數(shù)據(jù)驗(yàn)證
目的:對(duì)字節(jié)碼描述的信息進(jìn)行語(yǔ)義分析,確保其描述的信息符合java語(yǔ)法規(guī)范。

比如:檢查接口和父類,繼承與抽象方法等

3 字節(jié)碼驗(yàn)證
目的:對(duì)類的方法體進(jìn)行校驗(yàn)分析,主要通過(guò)數(shù)據(jù)流和控制流分析,確定程序語(yǔ)義是合理,符合邏輯的。

比如:跳轉(zhuǎn)指令,方法體中的類型轉(zhuǎn)換是有效的等

4 符號(hào)引用驗(yàn)證
目的:它發(fā)生在虛擬機(jī)將符號(hào)引用轉(zhuǎn)化為直接引用的時(shí)候。其目的是確保解析動(dòng)作能正常執(zhí)行。
符號(hào)應(yīng)用可以看作是對(duì)類自身以外的信息進(jìn)行匹配性校驗(yàn)。

備注:
驗(yàn)證階段是非必要的,可以使用-Xverify:none參數(shù)來(lái)關(guān)閉大部分的類校驗(yàn)措施,以縮短虛擬機(jī)類加載的時(shí)間。


Boy-20180721

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容