天天看點

虛拟機系列 | JVM特點,基礎結構與執行周期一、虛拟機簡介二、虛拟機結構三、生命周期四、HotSpot虛拟機

一、虛拟機簡介

1、虛拟機概念

虛拟機(Virtual Machine)指通過軟體模拟的具有完整硬體系統功能的、運作在一個完全隔離環境中的完整計算機系統。在實體計算機中能夠完成的工作在虛拟機中都能夠實作。在計算機中建立虛拟機時,需要将實體機的部分硬碟和記憶體容量作為虛拟機的硬碟和記憶體容量。每個虛拟機都有獨立的CMOS、硬碟和作業系統,可以像使用實體機一樣對虛拟機進行操作。

2、JVM虛拟機

JVM是Java-Virtual-Machine的縮寫,即Java虛拟機,JVM是一種用于計算裝置的規範,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模拟各種計算機功能來實作的。

3、JVM特點

虛拟機系列 | JVM特點,基礎結構與執行周期一、虛拟機簡介二、虛拟機結構三、生命周期四、HotSpot虛拟機

首先一次編譯處處運作是學習Java語言都知道的事情,其實并不是Java語言跨平台,是JVM跨平台,Jvm運作時并不是執行Java檔案,而是執行編譯後的.class檔案。

位元組碼

位元組碼檔案即JVM可以識别并執行的二進制檔案,不同的程式設計語言經過編譯器編譯處理之後,轉換成統一的位元組碼規範檔案,這樣JVM就可以執行。

跨平台

跨平台的特性即JVM虛拟機可以運作在不同的計算機系統上,例如經常使用的Linux系統,MacOS系統,Win系統,一次編譯,處處運作就是這樣了解的。

跨語言

随着JVM的不斷發展和優化,很多語言都借助JVM的能力,各種程式設計語言經過編譯,轉換為位元組碼檔案,JVM都可以識别,這也是現在Java體系下業務程式設計經常混語言的原因。

注意:現在和後續Jvm系列文章都是基于HotSpot-VM和JDK1.8+版本的基礎之上。

二、虛拟機結構

Jvm的整體結構大緻如下:

虛拟機系列 | JVM特點,基礎結構與執行周期一、虛拟機簡介二、虛拟機結構三、生命周期四、HotSpot虛拟機

1、類加載器

類加載器用來加載Java類到JVM虛拟機中,源代碼程式.java檔案在經過編譯器編譯之後就被轉換成位元組代碼.class檔案,類加載器負責讀取位元組代碼,并轉換成java.lang.Class類的一個執行個體。

2、運作時資料區

中繼資料區

JDK1.8開始的說法,之前稱為方法區Method-Area,存儲已被虛拟機加載的類資訊、常量、靜态變量、即時編譯器編譯後的代碼等資料。

堆區

所有線程共享的一塊記憶體區域,虛拟機啟動時被建立用來存放對象執行個體。

JVM棧

可以參考了解棧的資料結構,存放Java方法執行的記憶體模型,在Java開發中,一個功能實作需要多個子程式方法配合,程式執行時跳往子程式前,會将下個指令的位址存到堆棧中,直到子程式執行完後再将位址取出,退回到原來的程式中。

本地方法棧

本地方法棧和虛拟機棧的功能類似,為JVM調用native方法時服務。

程式計數器

相對較小的一塊記憶體空間,作用可以了解是目前線程所執行的位元組碼的行号訓示器。

3、執行引擎

Java虛拟機最核心的組成部分,輸入的是位元組碼,處理過程是位元組碼解析,輸出執行結果。

三、生命周期

這裡說的JVM生命周期,指JVM執行Java程式時的周期:

啟動初始化:啟動時通過引導類加載器建立初始類完成;

程式執行:從main方法開始,執行Java程式,直到程式執行完結束;

虛拟機退出:程式正常執行結束,或者發生異常、錯誤等而造成終止,也可以調用exit退出方法;

四、HotSpot虛拟機

HotSpot是Java體系下使用最多的虛拟機,它結合了最新的記憶體模型,垃圾收集器和自适應優化器,為使用許多先進技術的Java應用程式提供了最佳性能。

主要原因:使用多,大部分的Java運作環境都依賴HotSpot虛拟機。