Java內存管理-初始JVM和JVM啓動流程(二)

勿在流沙住高臺,出來混早晚要還的。java

作一個積極的人程序員

編碼、改bug、提高本身面試

我有一個樂園,面向編程,春暖花開!shell

上一篇分享了什麼是程序,以及Java程序運行的三個階段。也順便提到了Java中比較重要的一個東西就是JVM(JAVA 虛擬機),那麼今天在先了解一下JVM和JVM的啓動流程。編程

知識地圖:網絡

本文腦圖

一、什麼是虛擬機

虛擬機(Virtual Machine)指經過軟件模擬的具備完整硬件系統功能的、運行在一個徹底隔離環境中的完整計算機系統。【百度百科】jvm

虛擬機經過仿真引擎(稱爲管理程序)處理虛擬硬件,包括CPU、內存、硬盤驅動器、網絡接口和其餘設備。虛擬機管理程序提供的虛擬硬件設備映射到物理機器上的實際硬件,表現爲虛擬機的虛擬硬盤存儲在硬盤驅動器上的文件中。學習

有哪些種類的虛擬機呢?ui

  • 系統虛擬機,例如:VMware、Visual box
  • 程序虛擬機,例如:Java虛擬機(JVM)
  • 操做系統層虛擬化,例如:Docker

上面這三種虛擬機類型,做爲當代的程序員都必定聽過或者用過吧,若是沒有的話,那就跟上個人步伐,先學學JVM嘍。編碼

在說明一點:每一種類型的虛擬機都有不一樣和它們應對的使用場景:

  • VMVare或者Visual box 都是使用軟件模擬物理CPU的指令集

  • JVM使用軟件模擬Java 字節碼的指令集

二、初始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)

備註:

一、使用最爲普遍的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優秀特性。

2.2 JVM規範簡介

在JVM中定義了不少的規範,下面作個簡單的介紹:

JAVA 語言規範

  • 語法
  • 變量
  • 類型
  • 文法

JVM 規範

  • Class文件類型
  • 運行時數據
  • 幀棧
  • 虛擬機的啓動
  • 虛擬機的指令集

經過一系列的具體規範,符合規範的程序才能在JVM中進行運行,也就是無規矩不成方圓!

JVM是一個規範,一個文檔,任何人或者組織均可以經過這個規範本身實現具體的JVM。

HotSpot 只是JVM規範的一個實現了(其餘的JVM實現如:IBM J9 VM、JRockit等)。

這個能夠類比JPA ,JPA也是一個規範了,目前JPA主要實現由hibernate和openJPA等。

三、JVM啓動流程

平時咱們在IDE中編寫代碼後,直接運行,根本感覺JVM的存在。可是它的確真實存在,而且還有一套本身的運行流程。

JVM原理

其實初學JAVA的夥伴可能體會比較深,由於咱們在文本中編寫好代碼後,要執行 javac 編譯,而後在執行java進行運行。

那麼整個JVM的啓動流程是什麼樣子的呢?請看下圖:

JVM啓動流程

上面這張圖和下面這一張圖參考一塊兒看:

詳細的執行過程

其中的jvm.cfg 、jvm.dll 等在安裝的jdk環境中均可以找到:

啓動文件

說明: 啓動成功後,當該程序關閉退出,這個虛擬機實例也就隨之消亡!如咱們容許的main方面在IDE中控制檯上面有個紅色的點,那個點關閉變灰後也就意味着虛擬機實例的消亡。

總結

本篇簡單介紹了JVM的一些基礎的知識,後續慢慢深刻學習,一塊兒探索JVM世界!


謝謝你的閱讀,若是您以爲這篇博文對你有幫助,請點贊或者喜歡,讓更多的人看到!祝你天天開心愉快!


 

無論作什麼,只要堅持下去就會看到不同!在路上,不卑不亢!

博客首頁 : http://blog.csdn.net/u010648555

願你我在人生的路上能都變成最好的本身,可以成爲一個獨擋一面的人

© 天天都在變得更好的阿飛雲

相關文章
相關標籤/搜索