標籤:
1.什麼是jvm?
(1)jvm是一種用於計算裝置的規範,它是一個虛構出來的機器,是通過在實際的電腦上模擬類比各種功能實現的。
(2)jvm包含一套位元組碼指令集,一組寄存器,一個棧,一個記憶體回收堆和一個儲存方法域。
(3)JVM屏蔽了與具體作業系統平台相關的資訊,使Java程式只需產生在Java虛擬機器上啟動並執行目標代碼(位元組碼),就可以在多種平台上不加修改地運行。
JVM在執行位元組碼時,實際上最終還是把位元組碼解釋成具體平台上的機器指令執行。
2.jdk、jre、jvm是什麼關係?
(1)JRE(Java Runtime Environment),也就是java平台。所有的java程式都要在JRE環境下才能運行。
(2)JDK(Java Development Kit),是開發人員用來編譯、偵錯工具用的開發包。JDK也是JAVA程式需要在JRE上運行。
(3)JVM(Java Virtual Machine),是JRE的一部分。它是一個虛構出來的電腦,是通過在實際的電腦上模擬類比各種電腦功能來實現的。
JVM有自己完善的硬體架構,如處理器、堆棧、寄存器等,還具有相應的指令系統。
Java語言最重要的特點就是跨平台運行。使用JVM就是為了支援與作業系統無關,實現跨平台。
3.JVM原理
(1)jvm是java的核心和基礎,在java編譯器和os平台之間的虛擬處理器,可在上面執行位元組碼程式。
(2)java編譯器只要面向jvm,產生jvm能理解的位元組碼檔案。java源檔案經編譯成位元組碼程式,通過jvm將每條指令翻譯成不同的機器碼
,通過特定平台運行。
4. JVM執行程式的過程
1) 載入.class檔案
2) 管理並分配記憶體
3) 執行垃圾收集
JRE(java運行時環境)由JVM構造的java程式的運行環,也是Java程式啟動並執行環境,但是他同時一個作業系統的一個應用程式一個進程,
因此他也有他自己的啟動並執行生命週期,也有自己的代碼和資料空間。
JVM在整個jdk中處於最底層,負責於作業系統的互動,用來屏蔽作業系統環境,
提供一個完整的Java運行環境,因此也就虛擬電腦。
作業系統裝入JVM是通過jdk中Java.exe來完成,
通過下面4步來完成JVM環境:
1) 建立JVM裝載環境和配置
2) 裝載JVM.dll
3) 初始化JVM.dll並掛界到JNIENV(JNI調用介面)執行個體
4) 調用JNIEnv執行個體裝載並處理class類。
5. JVM的生命週期
1) JVM執行個體對應了一個獨立啟動並執行java程式它是進程層級
a) 啟動。啟動一個Java程式時,一個JVM執行個體就產生了,任何一個擁有public static void
main(String[] args)函數的class都可以作為JVM執行個體啟動並執行起點
b) 運行。main()作為該程式初始線程的起點,任何其他線程均由該線程啟動。JVM內部有兩種線程:守護線程和非守護線程,main()屬於非守護線程,守護線程通常由JVM自己使用,java程式也可以表明自己建立的線程是守護線程
c) 消亡。當程式中的所有非守護線程都終止時,JVM才退出;若安全管理器允許,程式也可以使用Runtime類或者System.exit()來退出
2) JVM執行引擎執行個體則對應了屬於使用者運行程式的線程它是線程層級的
jvm記憶體模型和記憶體配置