更新時間:2021年10月22日10時04分 來源:傳智教育 瀏覽次數(shù):
JVM虛擬機的組成
所謂java能實現(xiàn)跨平臺,是因為在不同平臺上運行不同的虛擬機決定的,因此java文件的執(zhí)行不直接在操作系統(tǒng)上執(zhí)行,而是通過jvm虛擬機執(zhí)行,我們可以從這張圖看到,JVM并沒有直接與硬件打交道,而是與操作系統(tǒng)交互用以執(zhí)行java程序。
下面張圖是jvm的組成圖,分為四部分:
類加載器
類加載器的作用是加載類文件到內存。比如我們寫一個HelloWorld.java的程序,首先使用javac命令進行編譯,生成HelloWorld.java的字節(jié)碼文件,怎樣才能執(zhí)行.class文件呢。就需要用藥類加載器將字節(jié)碼文件加載到內存中,然后通過jvm后續(xù)的模塊進行加載執(zhí)行程序。ClassLoader只管加載,至于是否能夠執(zhí)行,則不屬于它的負責范圍,由執(zhí)行引擎負責。
執(zhí)行引擎
執(zhí)行引擎也叫解釋器,負責解釋命令,提交操作系統(tǒng)執(zhí)行
本地接口
本地接口的作用是融合不同的編程語言為Java所用,它的初衷是融合C/C++程序,Java誕生的時候是C/C++橫行的時候,要想立足,必須有一個聰明的、睿智的調用C/C++程序,于是就在內存中專門開辟了一塊區(qū)域處理標記為native的代碼,它的具體做法是Native Method Stack中登記native方法,在Execution Engine執(zhí)行時加載native libraies。目前該方法使用的是越來越少了,除非是與硬件有關的應用,比如通過Java程序驅動打印機,或者Java系統(tǒng)管理生產(chǎn)設備,在企業(yè)級應用中已經(jīng)比較少見,因為現(xiàn)在的異構領域間的通信很發(fā)達,比如可以使用Socket通信,也可以使用Web Service等等,不多做介紹。
運行時數(shù)據(jù)區(qū)
運行數(shù)據(jù)區(qū)是整個JVM的重點。我們所有寫的程序都被加載到這里,之后才開始運行,Java生態(tài)系統(tǒng)如此的繁榮,得益于該區(qū)域的優(yōu)良自治。整個JVM框架由加載器加載文件,然后執(zhí)行器在內存中處理數(shù)據(jù),需要與異構系統(tǒng)交互是可以通過本地接口進行!
添加QQ(注意~~添加好友界面,選擇找人):435946716,【免費】獲取《JVM核心教程:JVM從門到精通_JVM虛擬機底層原理深入教程》全套視頻教程+配套資料。
猜你喜歡