jvm(Java virtual machine) JVM架构解释
2019獨角獸企業重金招聘Python工程師標準>>>
JVM 架構解釋
每個Java開發者都知道通過JRE【Java運行環境】執行字節碼。
但是很多人都不知道JRE是JVM實現的事實。JVM負責執行字節碼的分析
代碼的解釋和運行。
我們應該了解JVM的架構,這對開發者來說是很重要的,這促進我們更有效的
編寫代碼。在本文中,我們將深入學習有關JVM的架構和JVM組件的區別。
什么是JVM?
虛擬機是物理機的一個軟件實現。
JAVA是基于WORA(一次編寫,到處運行)的概念開發的,它運行在虛擬機上。
編譯器將Java文件編譯成class文件,然后將class文件輸入到JVM,JVM加載并運行class文件。
下面是JVM架構圖:
JVM是如何工作的?
像上面圖表顯示那樣,JVM分成3個主要的子系統:
?
1、類加載器子系統
Java的動態類加載功能是通過類加載子系統去處理的。
它并不是在編譯時候,而是在首次運行時加載引用類時、連接并初始化類文件。
?
1.1 加載
類通過該組件加載。通過引導類加載器,擴展類加載器,應用類加載器這三個類加載器幫助完成加載。
負責從引導類路徑去加載類,除了rt.jar之外,沒其他別的jar。給予該加載器最高的優先級。
負責加載ext目錄(jre\lib)的類
負責加載類路徑中應用級別的類,path提到的環境變量,等等。
以上的類加載器在加載類文件的時候遵循委托層次算法。
1.2連接
?
1.3 初始化
這是類加載的最后一個階段,此時所有的靜態變量都用原始值去賦值,并且將運行靜態代碼塊。
2、運行時數據區
運行時數據區域分成5個主要的組件:
每個JVM只有一個方法區,它是一個共享資源。
每個JVM只有一個堆區,由于方法區和堆區為多個線程共享內存,所以
存儲的數據不是線程安全的。
棧幀被分成3子實體
3、執行引擎
字節碼被分配到執行引擎執行的運行時數據區。執行引擎一塊一塊的讀取字節碼并執行。
這些本地碼將直接被方法調用重復地使用,這就改善了系統的性能。
?
?
Java Native Interface (JNI):JNI和本地方法庫互動,特供本地庫所需的執行引擎。
Native Method Libraries: 這是執行引擎所需的本地方法的一個集合
?
本文為在下翻譯外文的處女作,水平有限,翻譯不恰當之處,煩請讀者指正!
原文地址:https://dzone.com/articles/jvm-architecture-explained
?
轉載于:https://my.oschina.net/benz001/blog/2990014
總結
以上是生活随笔為你收集整理的jvm(Java virtual machine) JVM架构解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mobx 与 Redux 的性能对比
- 下一篇: Javascript基础之-Promis