講完了自動內存管理,我們來說說執(zhí)行子系統(tǒng)。執(zhí)行子系統(tǒng)講解的是JVM如何執(zhí)行程序。
Class文件概述
這篇我們只講講Class文件。Class文件又名類文件或字節(jié)碼文件。javac將.java文件(源代碼)編譯成.class文件(字節(jié)碼),jvm再將.class文件解釋成機器碼。
Class文件中包含的是Java虛擬機指令集和符號表以及若干其它輔助信息。其是一組以8字節(jié)為基礎單元的二進制流,沒有空隙存在。
其存儲數(shù)據(jù)的結構有兩種:無符號數(shù)和表。
(1)無符號數(shù)是用來描述數(shù)字,索引引用,數(shù)量值或按照UTF-8編碼構成字符串值。屬于基本的數(shù)據(jù)類型,以u1,u2,u4,u8分別代表1個字節(jié),2個字節(jié),4個字節(jié),8個字節(jié)
(2)表是由多個無符號數(shù)或其它表作為數(shù)據(jù)項構成的復合數(shù)據(jù)類型,以“_info”結尾。
其特點是:在Class文件中,哪個字節(jié)代表什么含義,長度是多少,先后順序如何,都不允許改變。
Class文件組成部分
對于Class的組成,在上圖中已經(jīng)羅列的很清楚了。還需再對常量池進行一下強調:當虛擬機運行時,需要從常量池獲得對應的符號引用,再在類創(chuàng)建時或運行時解析、翻譯到具體的內存地址之中。
以上便是為大家整理的關于JAVA虛擬機中class文件部分,