更新時(shí)間:2022-02-24 16:54:57 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2414次
Java虛擬機(jī)或JVM是Java運(yùn)行時(shí)系統(tǒng)。它是一個(gè)有助于驅(qū)動(dòng)Java代碼的虛擬機(jī)環(huán)境。與其他編程語(yǔ)言不同,每當(dāng)我們編譯Java程序時(shí),它永遠(yuǎn)不會(huì)生成機(jī)器碼。盡管如此,Java編譯器會(huì)為Java虛擬機(jī)生成字節(jié)碼。
JVM允許我們同時(shí)解決可移植性和安全性問(wèn)題:
在計(jì)算機(jī)編程中,平臺(tái)一詞代表程序運(yùn)行的環(huán)境。平臺(tái)無(wú)關(guān)僅僅意味著程序可以在不同平臺(tái)上輕松執(zhí)行,而無(wú)需重寫和重新編譯。這僅是可能的。因?yàn)閷ava程序轉(zhuǎn)換為字節(jié)碼可以更容易地在不同環(huán)境中執(zhí)行程序,因?yàn)槊總€(gè)平臺(tái)只需要實(shí)現(xiàn)JVM。
盡管JVM會(huì)因平臺(tái)而異,但它們可以理解相同的Java字節(jié)碼。這使得Java成為一種獨(dú)立于平臺(tái)的技術(shù),也證明了WORA(Write Once Run Anywhere)的合理性。
JVM在安全方面扮演著重要的角色。JVM正在執(zhí)行的Java程序也有助于使其安全,因?yàn)镴VM負(fù)責(zé)執(zhí)行環(huán)境,它可以包含程序并防止出現(xiàn)系統(tǒng)外部的問(wèn)題。這是因?yàn)樽止?jié)碼已經(jīng)過(guò)高度優(yōu)化,字節(jié)碼可以讓JVM更快地運(yùn)行程序。JVM還會(huì)驗(yàn)證字節(jié)碼,以確保程序的進(jìn)一步安全運(yùn)行。
Java虛擬機(jī)或JVM的內(nèi)部架構(gòu)包括:
類加載器在運(yùn)行時(shí)初始化類文件。它動(dòng)態(tài)加載類并讀取.Class文件并保存在方法區(qū)域中創(chuàng)建的字節(jié)碼。它的三個(gè)主要功能是加載、鏈接和初始化。類加載器主要分為三種類型:
每個(gè)JVM都有一個(gè)方法區(qū)。方法區(qū)存儲(chǔ)所有類級(jí)別的數(shù)據(jù),如類名、方法、靜態(tài)變量、非靜態(tài)變量、字段等。
堆區(qū)默認(rèn)存放對(duì)象數(shù)據(jù)和對(duì)應(yīng)的實(shí)例變量。
將為每個(gè)單獨(dú)的線程創(chuàng)建一個(gè)單獨(dú)的運(yùn)行時(shí)堆棧。創(chuàng)建的每個(gè)堆棧塊稱為堆棧幀,用于存儲(chǔ)相應(yīng)的局部變量。線程被銷毀后,堆棧由JVM自動(dòng)終止。
將為每個(gè)線程創(chuàng)建一個(gè)單獨(dú)的PC寄存器。它保存當(dāng)前執(zhí)行數(shù)據(jù)的數(shù)據(jù)。一旦執(zhí)行停止,PC寄存器將自動(dòng)更新到下一部分。
包含我們程序中使用的所有本機(jī)方法。
執(zhí)行引擎逐行執(zhí)行字節(jié)碼。它包含三個(gè)主要組件:
Java Native Interface(JNI)是一個(gè)框架,它提供了一個(gè)接口來(lái)與本地方法庫(kù)交互并調(diào)用用C、C++、Assembly等語(yǔ)言編寫的應(yīng)用程序。
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"所有關(guān)于Java虛擬機(jī)學(xué)習(xí)的掌握",希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)