溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java虛擬機(jī)的研究與實現(xiàn)(1)

發(fā)布時間:2020-08-11 20:10:39 來源:ITPUB博客 閱讀:107 作者:lonlux2 欄目:編程語言

Java虛擬機(jī)的研究與實現(xiàn)(1)

[@more@]

引言

Java虛擬機(jī)本質(zhì)是就是一個程序,當(dāng)它在命令行上啟動的時候,就開始執(zhí)行保存在某字節(jié)碼文件中的指令。Java語言的可移植性正是建立在Java虛擬機(jī)的基礎(chǔ)上。任何平臺只要裝有針對于該平臺的Java虛擬機(jī),字節(jié)碼文件(.class)就可以在該平臺上運行。這就是“一次編譯,多次運行”。

kaffe虛擬機(jī)的簡要分析

kaffe虛擬機(jī)采用了模塊化的程序設(shè)計思想,它由多個獨立的子系統(tǒng)組成。從功能模塊上來分它主要分為:虛擬機(jī)總體驅(qū)動模塊,類裝載器模塊,類執(zhí)行模塊, 數(shù)據(jù)區(qū)管理模塊,內(nèi)存管理模塊,本地支持模塊等等。kaffe虛擬機(jī)簡要的程序流程圖如圖1所示。

Java虛擬機(jī)的研究與實現(xiàn)(1)498)this.style.width=498;" border="0" />

圖1:kaffe虛擬機(jī)簡要的程序流程圖

Java虛擬機(jī)的實現(xiàn)

Java 源程序的執(zhí)行過程為: Java源程序(.java)經(jīng)過Java編譯器編譯生成字節(jié)碼文件(.class),然后由類裝載器將字節(jié)碼文件裝載到方法區(qū)中,然后進(jìn)行連接驗證,由Java虛擬機(jī)讀取字節(jié)碼,轉(zhuǎn)換為特定平臺的指令,并且在對應(yīng)的CPU中執(zhí)行。

本實現(xiàn)中采用的流程框架如下圖所示:

Java虛擬機(jī)的研究與實現(xiàn)(1)498)this.style.width=498;" border="0" />

圖2:本實現(xiàn)的主要框架

1、類裝載、連接及初始化

類文件包括:魔數(shù)(magic),次、主版本號,常量池,類或接口訪問修飾符,常量池索引(this_class和super_class),接口表,域表,方法表,類或接口的屬性信息。其中最復(fù)雜的內(nèi)容是常量池,它類似于傳統(tǒng)語言編譯過程中用到的符號表。

從原始的class文件到可以被Java虛擬機(jī)執(zhí)行的內(nèi)部數(shù)據(jù)格式,需要經(jīng)過裝載、連接和初始化這3個階段。

裝載是將class文件通過類裝載器裝載到在邏輯上被稱為方法區(qū)的內(nèi)存單元中的過程。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI