JVM:Java Virtual Machine Java虛擬機
JRE:Java Runtime Environment Java運行時環境
ABI:Application Binary Interface 應用二進制接口
是一個程序在運行時應用的環境
也是一種可執行文件的格式
操作系統都有自己的進程地址控件
硬件系統也各不相同
java在所有的計算機上都使用相同的ABI
java運行時環境JRE包括java虛擬機是java ABI與各種硬件/操作系統ABI之間的橋梁
)java源代碼編譯後生成的目標代碼是一種字節碼(bytecode)與其他語言不同的是java的字節碼是一種中立結構的機器代碼(不是任何現有系統上的二進制指令代碼)通過JVM可以快速地解釋並運行在任何特定的計算機上
)java程序的執行通過JVM實現
)一般情況下JVM是在運行java程序時調用的
)JVM讀取字節碼程序解釋或翻譯成實際的機器指令後再執行實行了java的一次編寫多處運行的特點
Java虛擬機是什麼
Java虛擬機之所以稱為虛擬就是因為它僅僅是由一個規范來定義的抽象計算機要運行某個Java程序首先需要一個符合該規范的具體實現
下面主要討論這個規范本身
要理解Java虛擬機你必須意識到當你說Java虛擬機時可能指的是如下三種不同的東西
<![if !supportLists]>· 抽象規范
<![if !supportLists]>· <![endif]>一個具體的實現
· 一個運行中的虛擬機實例
Java虛擬機抽象規范僅僅是個概念該規范的具體實現可能來自多個提供商並存在多個平台上它或者完全用軟件實現或者以硬件和軟件相結合的方式來實現當運行一個Java程序的同時也就在運行了一個Java虛擬機實例
對JVM規范的抽象說明是一些概念的集合它們已經在書《The Java Virtual Machine Specification》(《Java虛擬機規范》)中被詳細地描述了對JVM的具體實現要麼是軟件要麼是軟件和硬件的組合它已經被許多生產廠商所實現並存在於多種平台之上運行Java程序的任務由JVM的運行期實例單個承擔在本文中我們所討論的Java虛擬機(JVM)主要針對第三種情況而言它可以被看成一個想象中的機器在實際的計算機上通過軟件模擬來實現有自己想象中的硬件如處理器堆棧寄存器等還有自己相應的指令系統
JVM在它的生存周期中有一個明確的任務那就是運行Java程序因此當Java程序啟動的時候就產生JVM的一個實例當程序運行結束的時候該實例也跟著消失了下面我們從JVM的體系結構和它的運行過程這兩個方面來對它進行比較深入的研究
<![if !supportLineBreakNewLine]>
<![endif]>
Java虛擬機的生命周期
一個運行時的Java虛擬機實例的天職就是負責運行一個Java程序當啟動一個Java程序時一個虛擬機實例也就誕生了當該程序關閉退出這個虛擬機實例也就隨之消亡每個Java程序都運行在於自己的Java虛擬機實例中Java虛擬機實例通過調用某個初始類的main()方法來運行一個Java程序而這個main()方法必須是publicstatic返回值為voidmain()方法作為該程序初始線程的起點任何其他的線程都是由這個初始線程啟動的
Java虛擬機內部有兩種線程守護線程和非守護線程
守護線程通常由虛擬機自己使用的比如執行垃圾收集任務的線程但是Java程序也可以把它的創建的任何線程標記為守護線程
而Java程序中的初始線程就是開始於main()的那個是非守護線程只要有非守護線程在運行那麼這個Java程序也在繼續運行只有該程序中所有的非守護線程都終止時虛擬機實例將自動退出
Java虛擬機的體系結構Java虛擬機的結構分為
類裝載子系統執行引擎運行時數據區本地方法接口其中運行時數據區又分為
方法區堆Java棧PC寄存器本地方法棧
Java核心技術免費提供,內容來源於互聯網,本文歸原作者所有。