1. gzyueqian
      13352868059

      Java培訓:JVM架構解釋

      更新時間: 2022-07-27 09:52:57來源: 粵嵌教育瀏覽量:8157

        作為開發人員,了解 JVM 的架構非常重要,因為它使我們能夠更有效地編寫代碼。在本文中,我們將更深入地了解 Java 中的 JVM 架構以及 JVM 的不同組件。想了解有關java更多詳細信息,建議參加Java培訓,通過系統全面的學習,可以快速提升自己。

        什么是 JVM?

        虛擬機是物理機的軟件實現。Java 是根據 WORA(一次編寫,隨處運行)的概念開發的,它在 VM 上運行。編譯器將 Java 文件編譯為 Java .class 文件,然后將該 .class 文件輸入到 JVM 中,JVM 加載并執行該類文件。下面是JVM的架構圖。

        

        JVM 是如何工作的?

        如上架構圖所示,JVM主要分為三個子系統:類加載器子系統、運行時數據區、執行引擎。

        1. 類加載器子系統

        Java 的動態類加載功能由類加載器子系統處理。它加載,鏈接,并在運行時而不是編譯時第一次引用類時初始化類文件。

        1)加載

        類將由該組件加載。BootStrap ClassLoader、Extension ClassLoader 和 Application ClassLoader 是三個有助于實現它的類加載器。在java培訓中,不僅有理論知識的課程,還有大量實戰項目學習,讓你在實踐中真正掌握java知識和技能。

        l BootStrap ClassLoader – 負責從引導類路徑加載類,除了 rt.jar。此加載程序將獲得最高優先級。

        l Extension ClassLoader – 負責加載 ext 文件夾 (jrelib) 中的類。

        l Application ClassLoader——負責加載Application Level Classpath、路徑提到的環境變量等。

        上述類加載器在加載類文件時將遵循委托層次算法。

        2)鏈接

        l 驗證 - 字節碼驗證器將驗證生成的字節碼是否正確,如果驗證失敗,我們將收到驗證錯誤。

        l 準備 - 對于所有靜態變量,內存將被分配并分配默認值。

        3)初始化

        這是類加載的最后階段,在這里,所有靜態變量都將被賦予原始值,并且將執行靜態塊。

        

        2. 運行時數據區

        運行時數據區分為五個主要部分:

        1)方法區——所有類級別的數據都將存儲在這里,包括靜態變量。每個JVM只有一個方法區,它是一個共享資源。Java培訓班的課程都是系統全面的整體,無論個人基礎的好壞,都能真正做到從0開始,循序漸進的過渡到實際項目演練,在實際項目中驗證所學知識的掌握程度,這是個人自學難以企及的巨大優勢。

        2)堆區——所有對象及其對應的實例變量和數組都將存儲在這里,每個 JVM 也有一個堆區。Method 和 Heap 區域為多個線程共享內存。

        3)堆棧區——對于每個線程,將創建一個單獨的運行時堆棧。對于每個方法調用,都會在堆棧內存中創建一個條目,稱為堆棧幀。所有局部變量都將在堆棧內存中創建。堆棧區域是線程安全的,因為它不是共享資源。Stack Frame 分為三個子實體:

        l 局部變量數組 - 與方法相關,涉及多少局部變量以及相應的值將存儲在這里。

        l 操作數棧——如果需要執行任何中間操作,操作數棧充當運行時工作區來執行操作。

        l 幀數據——與方法對應的所有符號都存儲在這里。在任何異常的情況下,catch 塊信息將保存在幀數據中。

        4)PC 寄存器——每個線程都有單獨的 PC 寄存器,用于保存當前執行指令的地址,一旦指令執行,PC 寄存器將被下一條指令更新。

        5)本機方法堆棧——本機方法堆棧保存本機方法信息。對于每個線程,將創建一個單獨的本機方法堆棧。。對于初學者來說,參加java培訓是一個很好的學習方法,有明確清晰的學習路線,有系統全面的教學課程,可以讓你在短時間內學有所成,快速上崗。

        3.執行引擎

        分配給運行時數據區的字節碼將由執行引擎執行,執行引擎讀取字節碼并逐段執行。

        1)解釋器——解釋器更快地解釋字節碼,但執行速度很慢。解釋器的缺點是當一個方法被多次調用時,每次都需要新的解釋。

        2)JIT 編譯器——JIT 編譯器消除了解釋器的缺點。執行引擎將在解釋器的幫助下轉換字節碼,但當它發現重復的代碼時,它會使用 JIT 編譯器,編譯整個字節碼并將其更改為本地代碼。該原生代碼將直接用于重復的方法調用,從而提高系統的性能。

        l 中間代碼生成器——生成中間代碼

        l 代碼優化器——負責優化上面生成的中間代碼

        l 目標代碼生成器——負責生成機器代碼或本機代碼

        l 探查器——一個特殊的組件,負責查找熱點,即是否多次調用該方法。

        3)垃圾收集器——收集和刪除未引用的對象。垃圾回收可以通過調用 System.gc() 來觸發,但不能保證執行。JVM 的垃圾收集收集創建的對象。

        Java 本地接口(JNI)將與本機方法庫交互,并提供執行引擎所需的本機庫。本機方法庫是執行引擎所需的本機庫的集合。Java是一個很不錯的職業發展方向,很多想入行的小伙伴都會選擇參加java培訓來學習,這里有系統全面的課程,而且課程緊跟市場和企業需求,讓你學到最新技能,提高競爭力,找到滿意工作。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 久久婷婷人人喊人人澡人人爽 | 久久99情品久久久久久婷婷 | 亚洲日本97视频在线观看 | 亚洲国产综合91 | 亚洲日韩欧美九九精品综合网 | 日本三级香港三级人妇精品 |