摘要:框架說明開發者都知道會執行字節碼。但是可能大多數人都不知道一個事實是的實現,它分析字節碼,解釋并執行代碼。執行引擎字節碼加載到運行時數據區后,會被執行引擎執行。解釋器更快的解釋字節碼,但是執行非常慢。垃圾收集收集并移除不再被使用的對象。
JVM框架說明
java開發者都知道JRE(Java Runtime Environment)會執行字節碼。但是可能大多數人都不知道一個事實:JRE是JVM的實現,它分析字節碼,解釋并執行代碼。作為一個開發者,了解JVM的架構是非常重要的,這會讓我們寫的代碼更有效率。本文會深入學習JVM架構和它的各個重要組件。
什么是JVM虛擬機是物理機器的軟件實現。JAVA被設計成WORA(Write Once Run Anywhere), java程序是運行在虛擬機上的。編譯器將java文件編譯成.class文件,然后將.class文件載入到JVM,這一步會加載和執行class文件。下面的圖是展示了JVM的架構。
JVM 架構圖 JVM如何工作如上圖所示,jvm主要分成三個子系統
類加載系統
運行時數據區
執行引擎
類加載系統java的動態類加載功能在類加載子系統中實現。當第一次在運行時(不是在編譯時)涉及到一個class時,它會加載,鏈接并初始化類文件。
加載:類會通過這個組件加載。根加載器(rt.jar),擴展加載器(jrelibext)和系統加載器(classpath下的)是其主要的工具。
鏈接:主要分層三步
檢查:判斷其字節碼是否符合虛擬器要求
準備:分配靜態變量的空間,同時賦缺省值
解析:解析符號鏈接,鏈接到方法區的引用上去。
初始化:給靜態變量賦初值,并執行靜態代碼區
運行時數據區運行時數據區分成5個組件
方法區:保存所有類數據,包括靜態變量。一個jvm對應一個方法區。
堆 :保存所有的對象,對象中的變量以及數組。一個jvm對應一個堆。因為多個線程共享一個方法區和堆,所以數據保存不是線程安全的。
棧:每一個線程都會創建一個運行時的棧。對于每一個方法調用,都會在棧中創建一個棧幀。棧中保存了所有的本地變量。棧是線程安全的,因為它是線程獨享資源。
PC寄存器:每個線程有一個PC寄存器,用來記錄當前執行指令的地址,當一條指令執行完畢,它就會指向下一條指令。
本地方法棧:保存了本地方法的信息,每個線程會創建自己的本地方法棧。
執行引擎字節碼加載到運行時數據區后,會被執行引擎執行。執行引擎讀取字節碼文件,逐個執行。
解釋器:更快的解釋字節碼,但是執行非常慢。其缺點是當多次調用一個方法時,每次都會創建新的解釋器。
JIT編譯器:JIT編譯器彌補了解釋器的缺點。執行引擎會使用解釋器來轉換字節碼,當發現重復的代碼時就會使用JIT編譯器,它會編譯整個字節碼,將之轉換為本地代碼,這個本地代碼會直接用于多次的方法調用,以此來改進系統的性能。
垃圾收集:收集并移除不再被使用的對象??梢酝ㄟ^代碼system.gc()來觸發垃圾收集,
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67720.html
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...
閱讀 3944·2021-11-17 09:33
閱讀 3288·2021-10-08 10:05
閱讀 3117·2021-09-22 15:36
閱讀 1144·2021-09-06 15:02
閱讀 2775·2019-08-29 12:45
閱讀 1595·2019-08-26 13:40
閱讀 3405·2019-08-26 13:37
閱讀 426·2019-08-26 13:37
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要