JVM-JVM簡介

JVM簡介

 
JVM 全稱是Java Virtual Machine,Java 虛擬機,也就是在計算機上再虛擬一個計算機。不同於VMWare,JVM是不可見的,存在於內存中。
 
計算機組成元素:運算器、控制器、存儲器、輸入和輸出設備。JVM不僅有硬件架構,如處理器、堆棧(Stack)、寄存器等;還有相應的指令系統(字節碼就是一種指令格式)。
 

JVM的組成部分

 
 
JVM運行在操作系統之上,不直接與硬件交互。
 
 

JVM構成圖(網上廣爲流傳),JVM分爲四部分:

  • Class Loader 類加載器(子系統)

類加載器的作用是加載類文件到內存,比如編寫一個HelloWord.java程序,然後通過javac 編譯成HelloWorld.class文件。Class Loader負責加載HelloWorld.class文件到“運行數據區”。

注:Class Loader只負責加載.class文件,執行由Execution Engine負責。

  • Execution Engine 執行引擎(子系統)

執行引擎也叫做解釋器(Interpreter),負責解釋命令、執行class文件中的指令,與操作系統交互。

  • Native Interface 本地接口(組件)​​​​​​​

本地接口主要用於融合不同的編程語言爲Java所用。Java誕生時C/C++是主流編程語言,過去使用C++編寫的網站之後改爲用Java實現。但是不能拋棄所有過去的代碼,因此需要在新的網站中編寫接口,調用過去C/C++程序。具體實現:在內容中開闢一塊區域並標記爲native,Execution Engine 執行時加載native libraies。常見的應用(與硬件相關):通過Java程序驅動打印機、Java 系統管理生產設備。

使用native方法時,不再受JVM限制,容易出現JVM無法控制的native heap OutOfMemory。

  • Runtime data area 運行數據區(組件,即JVM內存)​​​​​​​

程序完全被加載至運行數據區之後纔開始運行。

 

JVM框架運行流程:加載器加載文件 → 執行器處理數據 → 本地接口與異構系統交互。

java.exe將class文件放在JVM中運行。JVM加載class文件並處理class文件內容,java.exe將字節碼解釋或者編譯爲機器指令,執行指令時會與計算機交互。

JVM將每一條需要執行的字節碼交給解釋器,解釋器將字節碼翻譯成對應的機器碼,解釋器執行機器碼(如需與OS交互,解釋器會與OS交互。)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章