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