1. 程式人生 > >Java內存管理-初始JVM和JVM啟動流程(二)

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

mac 指令 關系圖 java虛擬機 隔離 hibernate 不同 物理 計算

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

做一個積極的人

編碼、改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

願你我在人生的路上能都變成最好的自己,能夠成為一個獨擋一面的人技術分享圖片

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

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