教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

JVM組成部分和作用詳細介紹【圖文詳解】

更新時間:2021年10月22日10時04分 來源:傳智教育 瀏覽次數(shù):

JVM虛擬機的組成

所謂java能實現(xiàn)跨平臺,是因為在不同平臺上運行不同的虛擬機決定的,因此java文件的執(zhí)行不直接在操作系統(tǒng)上執(zhí)行,而是通過jvm虛擬機執(zhí)行,我們可以從這張圖看到,JVM并沒有直接與硬件打交道,而是與操作系統(tǒng)交互用以執(zhí)行java程序。

JVM與系統(tǒng)交互


下面張圖是jvm的組成圖,分為四部分:

JVM構(gòu)成圖

類加載器

類加載器的作用是加載類文件到內(nèi)存。比如我們寫一個HelloWorld.java的程序,首先使用javac命令進行編譯,生成HelloWorld.java的字節(jié)碼文件,怎樣才能執(zhí)行.class文件呢。就需要用藥類加載器將字節(jié)碼文件加載到內(nèi)存中,然后通過jvm后續(xù)的模塊進行加載執(zhí)行程序。ClassLoader只管加載,至于是否能夠執(zhí)行,則不屬于它的負責(zé)范圍,由執(zhí)行引擎負責(zé)。

執(zhí)行引擎

執(zhí)行引擎也叫解釋器,負責(zé)解釋命令,提交操作系統(tǒng)執(zhí)行

本地接口

本地接口的作用是融合不同的編程語言為Java所用,它的初衷是融合C/C++程序,Java誕生的時候是C/C++橫行的時候,要想立足,必須有一個聰明的、睿智的調(diào)用C/C++程序,于是就在內(nèi)存中專門開辟了一塊區(qū)域處理標記為native的代碼,它的具體做法是Native Method Stack中登記native方法,在Execution Engine執(zhí)行時加載native libraies。目前該方法使用的是越來越少了,除非是與硬件有關(guān)的應(yīng)用,比如通過Java程序驅(qū)動打印機,或者Java系統(tǒng)管理生產(chǎn)設(shè)備,在企業(yè)級應(yīng)用中已經(jīng)比較少見,因為現(xiàn)在的異構(gòu)領(lǐng)域間的通信很發(fā)達,比如可以使用Socket通信,也可以使用Web Service等等,不多做介紹。

運行時數(shù)據(jù)區(qū)

運行數(shù)據(jù)區(qū)是整個JVM的重點。我們所有寫的程序都被加載到這里,之后才開始運行,Java生態(tài)系統(tǒng)如此的繁榮,得益于該區(qū)域的優(yōu)良自治。整個JVM框架由加載器加載文件,然后執(zhí)行器在內(nèi)存中處理數(shù)據(jù),需要與異構(gòu)系統(tǒng)交互是可以通過本地接口進行!

添加QQ(注意~~添加好友界面,選擇找人):435946716,【免費】獲取《JVM核心教程:JVM從門到精通_JVM虛擬機底層原理深入教程》全套視頻教程+配套資料。



猜你喜歡

JVM將內(nèi)存空間劃分為幾種?

Java JDK是什么意思?有什么作用?

JDK1.8有哪些新特性?JDK1.8詳細介紹

傳智教育JavaEE高手班課程

0 分享到:
和我們在線交談!