Java 虛擬機日益成為互聯網大廠面試的重要內容,對于 Java 開發者而言,只有在了解 Java背后的原理后,才能寫出更高質量的代碼,才能在錯綜復雜的 bug 中快速定位出問題并找到解決方案,
本篇文章首先會帶領大家入門 Java 虛擬機,然后針對面試中常考的知識點和開發中常用的關鍵技術進行詳細地闡述,幫助大家對 Java 做到知其然,并知其所以然,
由于篇幅有限,這里只展示一部分,有需要完整版的朋友可以點一點下方鏈接
鏈接:1103806531暗號:CSDN
一、虛擬機簡介
1、虛擬機概念
虛擬機(Virtual Machine)指通過軟體模擬的具有完整硬體系統功能的、運行在一個完全隔離環境中的完整計算機系統,在物體計算機中能夠完成的作業在虛擬機中都能夠實作,在計算機中創建虛擬機時,需要將物體機的部分硬碟和記憶體容量作為虛擬機的硬碟和記憶體容量,每個虛擬機都有獨立的CMOS、硬碟和作業系統,可以像使用物體機一樣對虛擬機進行操作,
2、JVM虛擬機
JVM是Java-Virtual-Machine的縮寫,即Java虛擬機,JVM是一種用于計算設備的規范,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實作的,
3、JVM特點

首先一次編譯處處運行是學習Java語言都知道的事情,其實并不是Java語言跨平臺,是JVM跨平臺,Jvm運行時并不是執行Java檔案,而是執行編譯后的.class檔案,
位元組碼
位元組碼檔案即JVM可以識別并執行的二進制檔案,不同的編程語言經過編譯器編譯處理之后,轉換成統一的位元組碼規范檔案,這樣JVM就可以執行,
跨平臺
跨平臺的特性即JVM虛擬機可以運行在不同的計算機系統上,例如經常使用的Linux系統,MacOS系統,Win系統,一次編譯,處處運行就是這樣理解的,
跨語言
隨著JVM的不斷發展和優化,很多語言都借助JVM的能力,各種編程語言經過編譯,轉換為位元組碼檔案,JVM都可以識別,這也是現在Java體系下業務編程經常混語言的原因,
注意:現在和后續Jvm系列文章都是基于HotSpot-VM和JDK1.8+版本的基礎之上,
二、虛擬機結構
Jvm的整體結構大致如下:

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虛擬機,
最后
希望這篇文章對大家有幫助!
由于篇幅有限,面試常用知識點和面試題等內容沒有在這篇文章中展示,但我這邊都整理成了檔案,包括架構師全套視頻教程和關于java的系統化資料,有需要的朋友可以點一點下方鏈接領取
鏈接:1103806531暗號:CSDN

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/113279.html
標籤:其他
