勿在流沙住高台,出來混遲早要還的。
做一個積極的人
編碼、改bug、提升自己
我有一個樂園,面向編程,春暖花開!
上一篇分享了什么是程序,以及Java程序運行的三個階段。也順便提到了Java中比較重要的一個東西就是JVM(JAVA 虛擬機),那么今天在先了解一下JVM和JVM的啟動流程。
知識地圖:
1、什么是虛擬機
虛擬機(Virtual Machine)指通過軟件模擬的具有完整硬件系統功能的、運行在一個完全隔離環境中的完整計算機系統。【百度百科】
虛擬機通過仿真引擎(稱為管理程序)處理虛擬硬件,包括CPU、內存、硬盤驅動器、網絡接口和其他設備。虛擬機管理程序提供的虛擬硬件設備映射到物理機器上的實際硬件,表現為虛擬機的虛擬硬盤存儲在硬盤驅動器上的文件中。
有哪些種類的虛擬機呢?
- 系統虛擬機,例如:VMware、Visual box
- 程序虛擬機,例如:Java虛擬機(JVM)
- 操作系統層虛擬化,例如:Docker
上面這三種虛擬機類型,作為當代的程序員都一定聽過或者用過吧,如果沒有的話,那就跟上我的步伐,先學學JVM嘍。
在說明一點:每一種類型的虛擬機都有不同和它們應對的使用場景:
-
VMVare或者Visual box 都是使用軟件模擬物理CPU的指令集
-
JVM使用軟件模擬Java 字節碼的指令集
2、初始JVM
2.1 JAVA 和 JVM的歷史
想要了解JVM那就一定要說一下Java的發展了,但是這里不對Java的發展做介紹,簡單說明一下Java中的JDK和JRE(基礎的東西也比較重要,因為面試可能回被聞到)!
JDK和JRE的區別 :JDK = JRE + Develop環境
JDK(Java Development Kit)是面向開發人員使用的SDK,它提供了Java的開發環境和運行環境。
JRE是Java Runtime Enviroment是指Java的運行環境,是面向Java程序的使用者,而不是開發者。
注意:一般在生產環境上只需要安裝JRE就可以了!
引用網上的一張圖片說明:
從Java發布也就是JDk1.0開始的Classic VM,到逐漸發展在JDK1.3的時候出現Hotspot(作為默認虛擬機發布),到JDK1.4 Classic VM退役,到目前Hotspot 依舊在繼續發光發熱。如下JDK1.8:
-- java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
備注:
1、使用最為廣泛的JVM為HotSpot 2、HotSpot為Longview Technologies開發,被SUN收購 3、2006年Java開源,並建立OpenJDK,HotSpot成為Sun JDK和OpenJDK中所帶的虛擬機 4、2008年Oracle收購BEA,得到JRpckit VM 5、2010年Oracle 收購Sun,得到Hotspot 6、Oracle宣布在JDK8時整合JRockit和Hotspt,優勢互補,在Hotspot基礎上,一直JRockit優秀特性。
2.2 JVM規范簡介
在JVM中定義了很多的規范,下面做個簡單的介紹:
JAVA 語言規范
- 語法
- 變量
- 類型
- 文法
JVM 規范
- Class文件類型
- 運行時數據
- 幀棧
- 虛擬機的啟動
- 虛擬機的指令集
通過一系列的具體規范,符合規范的程序才能在JVM中進行運行,也就是無規矩不成方圓!
JVM是一個規范,一個文檔,任何人或者組織都可以通過這個規范自己實現具體的JVM。
HotSpot 只是JVM規范的一個實現了(其他的JVM實現如:IBM J9 VM、JRockit等)。
這個可以類比JPA ,JPA也是一個規范了,目前JPA主要實現由hibernate和openJPA等。
3、JVM啟動流程
平時我們在IDE中編寫代碼后,直接運行,根本感受JVM的存在。但是它的確真實存在,並且還有一套自己的運行流程。
其實初學JAVA的伙伴可能體會比較深,因為我們在文本中編寫好代碼后,要執行 javac 編譯,然后在執行java進行運行。
那么整個JVM的啟動流程是什么樣子的呢?請看下圖:
上面這張圖和下面這一張圖參考一起看:
其中的jvm.cfg 、jvm.dll 等在安裝的jdk環境中都可以找到:
說明: 啟動成功后,當該程序關閉退出,這個虛擬機實例也就隨之消亡!如我們允許的main方面在IDE中控制台上面有個紅色的點,那個點關閉變灰后也就意味着虛擬機實例的消亡。
總結
本篇簡單介紹了JVM的一些基礎的知識,后續慢慢深入學習,一起探索JVM世界!
謝謝你的閱讀,如果您覺得這篇博文對你有幫助,請點贊或者喜歡,讓更多的人看到!祝你每天開心愉快!
不管做什么,只要堅持下去就會看到不一樣!在路上,不卑不亢!
博客首頁 : http://blog.csdn.net/u010648555
願你我在人生的路上能都變成最好的自己,能夠成為一個獨擋一面的人
© 每天都在變得更好的阿飛雲