《深入理解Java虛擬機(jī)》-類文件結(jié)構(gòu)

java源文件經(jīng)編譯器編譯后生成class文件,你可曾想過(guò)class文件都包含哪些信息。class文件包含虛擬機(jī)執(zhí)行時(shí)所需的所有信息,其他語(yǔ)言只要能被編譯成class文件,那就能被虛擬機(jī)加載進(jìn)內(nèi)存執(zhí)行,比如Groovy程序可以被groovyc編譯器編譯成class文件。這也是Java虛擬機(jī)語(yǔ)言無(wú)關(guān)性的基石。

class文件結(jié)構(gòu)圖

class.png

常量池

常量主要包括類和接口全局限定名、方法名稱、字面常量等。后面的字段表,方法表,屬性表都會(huì)引用這里常量。

字段表

描述接口或類中聲明的變量。包含作用域、可變性、并發(fā)可見(jiàn)性等信息。

方法表

描述方法信息。包含方法作用域等信息。方法的代碼信息保存在屬性表中。

屬性表

包含一些屬性信息,字段表和方法表都會(huì)引用這里的屬性信息。比如代碼信息會(huì)被方法表引用。

總結(jié)

class文件有著非常嚴(yán)格的格式,這里僅僅粗略地看下具體包含哪些信息。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容