勿在流沙住高臺,出來混早晚要還的。java
作一個積極的人程序員
編碼、改bug、提高本身面試
我有一個樂園,面向編程,春暖花開!shell
上一篇分享了什麼是程序,以及Java程序運行的三個階段。也順便提到了Java中比較重要的一個東西就是JVM(JAVA 虛擬機),那麼今天在先了解一下JVM和JVM的啓動流程。編程
知識地圖:網絡
虛擬機(Virtual Machine)指經過軟件模擬的具備完整硬件系統功能的、運行在一個徹底隔離環境中的完整計算機系統。【百度百科】jvm
虛擬機經過仿真引擎(稱爲管理程序)處理虛擬硬件,包括CPU、內存、硬盤驅動器、網絡接口和其餘設備。虛擬機管理程序提供的虛擬硬件設備映射到物理機器上的實際硬件,表現爲虛擬機的虛擬硬盤存儲在硬盤驅動器上的文件中。學習
有哪些種類的虛擬機呢?ui
上面這三種虛擬機類型,做爲當代的程序員都必定聽過或者用過吧,若是沒有的話,那就跟上個人步伐,先學學JVM嘍。編碼
在說明一點:每一種類型的虛擬機都有不一樣和它們應對的使用場景:
VMVare或者Visual box 都是使用軟件模擬物理CPU的指令集
JVM使用軟件模擬Java 字節碼的指令集
想要了解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)
備註:
一、使用最爲普遍的JVM爲HotSpot 二、HotSpot爲Longview Technologies開發,被SUN收購 三、2006年Java開源,並創建OpenJDK,HotSpot成爲Sun JDK和OpenJDK中所帶的虛擬機 四、2008年Oracle收購BEA,獲得JRpckit VM 五、2010年Oracle 收購Sun,獲得Hotspot 六、Oracle宣佈在JDK8時整合JRockit和Hotspt,優點互補,在Hotspot基礎上,一直JRockit優秀特性。
在JVM中定義了不少的規範,下面作個簡單的介紹:
JAVA 語言規範
JVM 規範
經過一系列的具體規範,符合規範的程序才能在JVM中進行運行,也就是無規矩不成方圓!
JVM是一個規範,一個文檔,任何人或者組織均可以經過這個規範本身實現具體的JVM。
HotSpot 只是JVM規範的一個實現了(其餘的JVM實現如:IBM J9 VM、JRockit等)。
這個能夠類比JPA ,JPA也是一個規範了,目前JPA主要實現由hibernate和openJPA等。
平時咱們在IDE中編寫代碼後,直接運行,根本感覺JVM的存在。可是它的確真實存在,而且還有一套本身的運行流程。
其實初學JAVA的夥伴可能體會比較深,由於咱們在文本中編寫好代碼後,要執行 javac 編譯,而後在執行java進行運行。
那麼整個JVM的啓動流程是什麼樣子的呢?請看下圖:
上面這張圖和下面這一張圖參考一塊兒看:
其中的jvm.cfg 、jvm.dll 等在安裝的jdk環境中均可以找到:
說明: 啓動成功後,當該程序關閉退出,這個虛擬機實例也就隨之消亡!如咱們容許的main方面在IDE中控制檯上面有個紅色的點,那個點關閉變灰後也就意味着虛擬機實例的消亡。
本篇簡單介紹了JVM的一些基礎的知識,後續慢慢深刻學習,一塊兒探索JVM世界!
謝謝你的閱讀,若是您以爲這篇博文對你有幫助,請點贊或者喜歡,讓更多的人看到!祝你天天開心愉快!
無論作什麼,只要堅持下去就會看到不同!在路上,不卑不亢!
博客首頁 : http://blog.csdn.net/u010648555
願你我在人生的路上能都變成最好的本身,可以成爲一個獨擋一面的人
© 天天都在變得更好的阿飛雲