?
由源文件被編譯成字節(jié)碼文件,然后經(jīng)過類加載器進行類加載,了解類加載的各個階段,了解有哪些類加載器,加載到虛擬機中執(zhí)行字節(jié)碼指令,執(zhí)行時使用解釋器進行解釋執(zhí)行,解釋時對熱點代碼進行運行期的編譯處理。?
1.類文件結(jié)構(gòu)
??根據(jù)下面規(guī)范,魔數(shù),兩個版本,常量池信息,訪問修飾,類名信息,父類信息,接口信息,類中成員變量,方法信息,類的附加屬性信息。
加上-parameters參數(shù)會保留方法中參數(shù)的名稱信息?
第一列是八進制的標號。
1.1魔數(shù)
不同的文件有不同的魔數(shù)信息。魔數(shù)用于標識文件是什么類型。
java選擇"ca fe ba be"作為魔數(shù)。?
1.2 版本
?小版本是前兩個,主版本是后兩個,16進制的34對應(yīng)10進制的52,對應(yīng)jdk8。
1.3 常量池
經(jīng)過翻譯解讀知道第二項是System.out,第三項是要打印的字符串常量,第四項表示是out中的println方法,參數(shù)和返回值類型是(String)void。
()V表示空參的void.
第五項解讀出來就是cn/itcast/jvm/t5/HelloWorld? ?本類信息
第六項是java/lang/Object? ? ?父類信息
開頭加上L是引用類型
?
?
?
?這里講的什么狗屎?總之一共34項記錄了常量池里面各種信息。
這里可以去對照深入理解java虛擬機第三版中的、第222頁的常量池中的17種數(shù)據(jù)類型的結(jié)構(gòu)總表來看。
1.4訪問標識與繼承信息
接下來到訪問修飾到接口這部分的描述
知道29 56都是常量池相關(guān)內(nèi)容?
訪問修飾部分通過查表知道00 21 是下面表中01+20,是一個public 類。
?
1.5 Field 信息
成員變量信息
?java中為使字節(jié)碼更加緊湊使用了更簡潔的字符表示類型信息,如B表示byte。
L ClassName表示引用類型,【表示一維數(shù)組
?
1.6Method 信息
這里方法信息較為復(fù)雜的,需要了解反編譯。
?了解即可......什么狗屎?
上面是init方法的解讀........main方法不看了
看不懂是因為byd沒有把那幾個映射表拿出來,前面的常量有常量結(jié)構(gòu)表,變量、方法、屬性都有對應(yīng)的映射表,告訴你各個類型用什么十六進制表示,然后這些類型由多少個十六進制組成
1.7 附加屬性
蚌埠住了,直接跳了?
去搜一下jvm類文件結(jié)構(gòu),看看其他的視頻先。
了解即可文章來源地址http://www.zghlxwxcb.cn/news/detail-667452.html
了解即可文章來源:http://www.zghlxwxcb.cn/news/detail-667452.html
了解即可
到了這里,關(guān)于JVM——類加載與字節(jié)碼技術(shù)—類文件結(jié)構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!