JVM(Java虛擬機)的原理是一種軟體方法實現的抽象計算機,它位於作業系統的用戶空間中,禁止了與作業系統平台相關的信息。
JVM的核心組件包括一套位元組碼指令集、一組暫存器、一個棧、一個垃圾回收堆和一個存儲方法域。Java程式首先被編譯成位元組碼,然後通過JVM將每一條位元組碼指令翻譯成特定平台的機器碼執行。JVM實例對應一個獨立運行的Java程式,它包括一個進程級別的運行時數據區,如方法區、堆、Java棧、PC暫存器等。JVM內部有兩種執行緒:守護執行緒和非守護執行緒,main()作為程式的初始執行緒,通常是非守護執行緒,而守護執行緒通常由JVM自己使用。當程式中的所有非守護執行緒都終止時,JVM實例才會結束生命。
這種設計使得Java程式具有「一次編譯,到處運行」的特性,因為Java位元組碼不依賴於具體的作業系統平台。