上一篇文章我們已經(jīng)討論了JVM在運(yùn)行Java應(yīng)用程序中的作用,但是它是如何執(zhí)行其功能的呢?為了運(yùn)行Java應(yīng)用程序,JVM依賴于Java類加載器和Java執(zhí)行引擎。對java感興趣的同學(xué)可以參加java培訓(xùn),可以獲得快速有效的學(xué)習(xí)。
Java類加載器
Java中的一切都是類,所有的Java應(yīng)用都是從類構(gòu)建的。一個(gè)應(yīng)用程序可以包含一個(gè)類或數(shù)千個(gè)類。為了運(yùn)行Java應(yīng)用程序,JVM必須加載編譯的。類文件放入可以訪問它們的上下文中,如服務(wù)器。JVM依賴它的類裝入器來執(zhí)行這個(gè)功能。
當(dāng)你打字的時(shí)候java classfile,你是說:啟動(dòng)一個(gè)JVM并將命名的類裝入其中。
Java類加載器是JVM的一部分,它將類加載到內(nèi)存中,并使它們可供執(zhí)行。類加載器使用像延遲加載和緩存這樣的技術(shù)來盡可能高效地加載類。也就是說,類加載并不像(比如)可移植運(yùn)行時(shí)內(nèi)存管理那樣令人頭疼,所以技術(shù)相對簡單。
每個(gè)Java虛擬機(jī)都包括一個(gè)類加載器。JVM規(guī)范描述了在運(yùn)行時(shí)查詢和操作類加載器的標(biāo)準(zhǔn)方法,但是JVM實(shí)現(xiàn)負(fù)責(zé)實(shí)現(xiàn)這些功能。從開發(fā)人員的角度來看,底層的類加載器機(jī)制是一個(gè)黑匣子。在java培訓(xùn)中,有很多關(guān)于JVM的培訓(xùn)課程,在專業(yè)老師的教學(xué)指導(dǎo)下,可以很全面地掌握網(wǎng)絡(luò)安全的相關(guān)知識(shí)和技能。
執(zhí)行引擎
一旦類加載器完成了加載類的工作,JVM就開始在每個(gè)類中執(zhí)行代碼。執(zhí)行引擎是處理此功能的JVM組件。執(zhí)行引擎對正在運(yùn)行的JVM至關(guān)重要。實(shí)際上,對于所有實(shí)際用途,它都是JVM實(shí)例。
執(zhí)行代碼涉及管理對系統(tǒng)資源的訪問。JVM執(zhí)行引擎介于運(yùn)行的程序和提供這些資源的操作系統(tǒng)之間,運(yùn)行的程序需要文件、網(wǎng)絡(luò)和內(nèi)存資源。
系統(tǒng)資源可以分為兩大類:內(nèi)存和其他所有資源。回想一下,JVM負(fù)責(zé)處理未使用的內(nèi)存,而垃圾收集是進(jìn)行這種處理的機(jī)制。JVM還負(fù)責(zé)分配和維護(hù)開發(fā)人員認(rèn)為理所當(dāng)然的引用結(jié)構(gòu)。例如,JVM的執(zhí)行引擎負(fù)責(zé)接受類似Java中的new關(guān)鍵字的內(nèi)容,并將其轉(zhuǎn)換為特定于操作系統(tǒng)的內(nèi)存分配請求。想學(xué)習(xí)java技術(shù)的同學(xué),不妨報(bào)個(gè)Java培訓(xùn)班,有明確清晰的學(xué)習(xí)路線,理論知識(shí)+實(shí)戰(zhàn)操作,可以獲得快速提升。
除了內(nèi)存之外,執(zhí)行引擎還管理用于文件系統(tǒng)訪問和網(wǎng)絡(luò)I/O的資源。由于JVM可以跨操作系統(tǒng)進(jìn)行互操作,所以這不是一項(xiàng)普通的任務(wù)。除了每個(gè)應(yīng)用程序的資源需求之外,執(zhí)行引擎還必須對每個(gè)操作系統(tǒng)環(huán)境做出響應(yīng)。這就是JVM能夠處理各種需求的方式。
JVM演變:過去、現(xiàn)在、未來
因?yàn)?/span>JVM是一個(gè)眾所周知的運(yùn)行時(shí),具有標(biāo)準(zhǔn)化的配置、監(jiān)控和管理,所以它自然適合使用Docker和Kubernetes等技術(shù)進(jìn)行容器化開發(fā)。它也適用于平臺(tái)即服務(wù)(PaaS),并且有多種無服務(wù)器方法。由于所有這些因素,JVM非常適合微服務(wù)架構(gòu)。
另一個(gè)即將推出的重要特性是Project Loom,它希望將虛擬線程引入JVM。虛擬線程能夠在操作系統(tǒng)進(jìn)程之上以更高的抽象度并發(fā)。虛擬線程能夠在它們之間共享內(nèi)存,從而對編碼習(xí)慣用法和性能進(jìn)行潛在的巨大改進(jìn)。參加java培訓(xùn),學(xué)習(xí)最新java技能,可以讓你的實(shí)力一直保持領(lǐng)先水平,提升行業(yè)競爭力。