1. 程式人生 > 實用技巧 >JVM原理分析

JVM原理分析

JVM是Java Virtual Machine(Java虛擬機器)的縮寫,是在Java編譯器和作業系統平臺之間的虛擬處理器,JVM可以執行在各種作業系統平臺上,如Windows、Linux、Mac OS等。

JVM是Java平臺的核心和基礎,它是一種基於底層的作業系統和硬體平臺,並利用軟體方法來實現的抽象的虛擬處理系統,JVM負責解析和執行Java位元組碼程式。

1)JVM的執行原理

Java編譯器針對特定的JVM,生成JVM能理解的位元組碼檔案。Java原始檔經過編譯器的編譯,生成位元組碼檔案(.class檔案)。執行Java程式時,JVM將位元組碼檔案中的每一條指令翻譯成對應的機器碼,最後在對應的平臺上執行。

wKioL1WIHknRQymPAAHKdG-HfSE939.jpg

圖1 JVM的執行原理[1]


2
)作業系統載入JVM的步驟

JVM是Java程式執行的容器,同時也是作業系統的一個程序,因此JVM有自己的執行生命週期,也有自己的程式碼和資料空間。

JVM在整個JDK中處於最底層,負責與作業系統的互動,用來遮蔽作業系統環境,提供一個完整的Java執行環境。作業系統裝入JVM是通過jdk中java.exe來完成,作業系統通過下面4步載入JVM:

  • 建立JVM裝載環境和配置

  • 裝載jvm.dll

  • 初始化jvm.dll並掛接到JNIENV(JNI呼叫介面)例項

  • 呼叫JNIEnv例項裝載並處理Class:

  • 載入.class檔案

  • 管理並分配記憶體

  • 執行垃圾收集

3) Java的平臺無關性

Java

語言的一個重要的特點就是平臺無關性,而使用JVM是實現這一特點的關鍵。一般的高階語言如果要在不同的平臺上執行,至少需要編譯成不同的目的碼。而引入JVM後,Java語言在不同平臺上執行時不需要重新編譯。Java語言使用JVM遮蔽了與具體平臺相關的資訊,使得Java語言編譯程式只需生成在JVM執行的目的碼(位元組碼),就可以在多種平臺上不加修改地執行。JVM在執行位元組碼時,把位元組碼解釋成具體平臺上的機器指令執行,這也是Java程式能夠“一次編譯,處處執行”的原因。

轉載於:https://blog.51cto.com/williampany/1664184