Java虛擬機(JVM)用于Java運行時環境(JRE)。最初的JVM被設想為字節碼解釋器。由于性能問題,這可能有點出人意料。許多現代語言都要編譯成CPU專用的可執行代碼。然而,JVM執行Java程序這一事實有助于解決與基于web的應用程序相關的主要問題。想對JVM有更多了解,建議考慮報名參加Java培訓,有明確的學習路線和全面系統的課程,能獲得較快提升。
JVM執行Java程序這一事實也有助于使其穩定。由于JVM負責,程序的執行由它控制。因此,JVM可以構建一個稱為沙盒的有限執行區域,其中包含軟件,從而防止系統獲得無限訪問。Java語言中存在的一些限制也改善了保護。Java的JVM架構包括類加載器、執行引擎、內存字段等。
為了理解差異,讓我們通過說明JVM的工作來深入了解組件。
類加載器:類加載器的目的是加載類文件。它有助于完成三個主要功能:加載、初始化和鏈接。
JVM語言堆棧:Java內存存儲本地變量和計算的部分結果。每個線程都有自己的JVM堆棧,在創建線程時創建。調用該方法時,將創建一個新框架,然后將其刪除。在java培訓中,也有關于JVM內存的學習,學好這部分的知識,可以避免在工作中出現的很多問題。
方法區:JVM方法區專門存儲Java應用程序的元數據和代碼隱藏文件。
PC寄存器:當前正在執行的Java虛擬機指令地址由PC寄存器保存。Java中的每個線程都有自己獨立的PC寄存器。
堆:堆中保存了所有對象、數組和實例變量。此內存在多個線程之間共享。
執行引擎:它是一種用于測試軟件、硬件或完整系統的軟件形式。測試執行引擎從不攜帶任何有關被測試產品的信息。
本地方法庫:作為執行引擎的本地方法庫需要本地庫(C,C++),而作為編程框架的本地方法接口是本地方法接口。這使得在JVM中運行的Java代碼能夠調用庫和本機應用程序。此外,本機方法堆棧根據本機庫具有本機代碼命令。它將存儲分配給本機堆或使用任何堆棧類型。參加java培訓,可以學到全方位的java知識和技能,而且還有實戰項目操作訓練,積累項目經驗,以便快速上崗。
實時(JIT)編譯器
雖然Java是作為一種解釋語言開發的,但為了提高性能,Java并沒有阻止字節碼編譯為本地代碼。因此,在Java首次發布后不久,HotSpotJVM就發布了。HotSpot中包含一個即時(JIT)字節碼編譯器。實時(JIT)編譯器是JVM的一部分,在逐件需求的基礎上,字節碼的選定部分被實時編譯為可執行代碼。也就是說,正如在執行期間所必需的,JIT編譯器編譯代碼。此外,并非所有字節碼序列都被編譯,只有那些將從編譯中受益的字節碼序列才被編譯。然而,及時的方法仍然大大提高了效率。即使動態編譯應用于字節碼,可移植性和安全性功能仍然存在,因為JVM仍然控制執行環境。
為了理解差異,讓我們通過說明JIT的工作方式來深入了解組件。
通過解釋字節碼,JVM的標準實現降低了程序的執行速度。JIT編譯器在運行時與JVM交互以提高性能,并將適當的字節碼序列編譯成本機代碼。
硬件正在解釋代碼,而不是JVM(Java虛擬機)。這可以提高執行速度的性能。這可以在每個文件、每個函數或任何任意代碼片段上完成;代碼通常在接近執行時進行編譯(因此稱為“及時”),然后緩存并在以后重用,而無需重新編譯。它執行許多優化:數據分析、從堆棧操作轉換為注冊表操作、通過注冊表分配減少內存訪問、消除常見子表達式。若想要更加系統更加詳細的學習 JVM 知識,建議參加java培訓,有經驗豐富的專業講師面授指導教學,能夠幫你更全面了解JVM。