成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一次性聊透JVM架構設計,就算八股文也得會

開發 前端
JVM(Java Virtual Machine)其實是一套標準。通過定義虛擬機,像真實計算機一樣,能夠運行字節碼指令。JVM的好處是可以屏蔽操作系統的細節, 使Java可以一次編寫,到處運行。

有位小伙伴在我的粉絲群里面問我一個面試題,說面試被問對JVM的理解,不知道怎么回答,今天咱們來聊透,就算是八股文你也得會。另外,往期面試題解析中配套的文檔我已經準備好,想獲得的可以在文章底部加我\/領取!

先來看什么是JVM?

1.什么是JVM

JVM(Java Virtual Machine)其實是一套標準。通過定義虛擬機,像真實計算機一樣,能夠運行字節碼指令。JVM的好處是可以屏蔽操作系統的細節, 使Java可以一次編寫,到處運行。

實現JVM的廠商有很多,比如Hotspot、JRockit、IBM J9等等。今天我們重點來聊一聊主流的Hotspot,因為Oracle JDK與OpenJDK都是采用HotSpot VM。從源碼層面說,它們倆基本上沒什么區別。

2.JVM架構設計

下面我給大家詳細介紹一下JVM的架構設計,總體來看HotSpot VM 主要由3個核心部分組成:

  • 類裝載子系統(Class Loader Subsystem)
  • 運行時數據區(Runtime Data Areas)
  • 執行引擎(Execution Engine)

那么Hotspot JVM架構細節和運行機制又是怎樣的呢?首先,將編譯好的.class文件裝載到類加載子系統,它的主要功能是查找并驗證類文件、完成相關內存空間的分配和對象賦值。

類文件加載到內存之后由運行時數據區來完成數據存儲和數據交換。運行時數據區又分為線程共享內存區和線程隔離內存區。線程共享內存區包括方法區和堆區,它們是程序員能夠通過編寫代碼直接操作的內存區,而線程隔離內存區包括棧區、程序計數器和本地方法棧,它們是完全由JVM來調度的內存區域。

首先來看方法區,它的主要功能是存儲運行時常量池、字段和方法的元數據和類的的元數據。

而堆區呢,主要是用來存儲Java對象的實例,也就是我們new的類都存在堆區。

棧區是通過線程的方式運行來加載各種方法。

程序計數器呢,是負責保存每個線程執行的方法的地址。

本地方法區是負責加載并運行native類型的方法,

這樣,通過運行時數據區的五個內存區就能完成Java程序程序邏輯的執行和數據交換。接下來看執行引擎,它主要包含即時編輯器和垃圾回收器。

即時編譯器,通俗地理解就是用來將字節碼翻譯成操作系統能夠執行的CPU指令,可以通過JVM參數來設置選擇解釋執行或者是編譯執行。

所謂解釋執行就是直接將字節碼作為源程序輸入解釋執行,不必等待編譯器全部編譯完成再執行,這樣可以省去許多不必要的編譯時間。

而編譯執行就是就是由編譯程序將目標代碼一次性編譯成目標程序,再由機器運行,執行效率更高,占用內存資源也更小

在Hotspot的實現中默認是兩種方式的組合。

垃圾回收器主要負責對運行時數據區的數據進行管理和回收,其實就是對各種垃圾回收算法的實現,總體來說有三種核心算法,分別是復制算法、標記清除算法和標記整理算法,這些算法的選擇呢,我們可以通過JVM參數來設置。

最后,來看本地方法接口,也就是JNI技術。我們可以通過JNI來查找并調用C或C++實現的代碼,還可以調用操作系統的動態鏈接庫(DLL)等等。

3、總結

好了,通過對Hotspot架構的分析,相信各位小伙伴已經非常清晰地知道了JVM的運行原理。當然,在實際的開發過程中,我們可以通過配置JVM參數來對JVM進行調優,比如這些參數。

還可以通過一些常見的JDK命令來分析JVM的狀態,查找問題的原因從而完成對JVM的調優,比如這些命令。

責任編輯:武曉燕 來源: Tom彈架構
相關推薦

2022-05-19 08:41:09

JVM虛擬機架構

2021-05-20 11:43:57

操作系統硬件軟件

2021-11-04 14:32:17

Spring 面試作用域

2021-10-26 14:40:03

MySQL SQL 語句數據庫

2021-10-21 14:43:23

Java 語言 Java 基礎

2022-09-03 11:36:11

Python文件網絡

2021-07-26 14:59:23

面試Redis內存數據庫

2021-09-07 14:46:42

面試網絡HTTP 協議

2023-11-28 18:09:49

Java多態

2021-10-26 17:05:55

Redis字符串復雜度

2021-08-01 22:59:43

Object八股文quals

2024-10-12 09:26:32

線程池系統核心線程

2021-08-12 09:28:24

Java多線程變量

2024-02-23 19:17:12

構造函數C++開發

2021-04-14 10:02:59

網絡八股文協議

2023-11-03 08:27:46

2021-05-06 07:27:57

面試任務調度器

2009-12-25 14:46:53

Windows 7文件關聯

2022-05-06 22:13:56

JVM垃圾收集算法

2023-11-29 17:28:07

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99爱国产| www.久久久久久久久久久久 | 黄色高清视频 | 国内精品伊人久久久久网站 | 久草网站 | 五月激情婷婷在线 | 一级做a爰片久久毛片 | 9porny九色视频自拍 | 国产精品99久久久久久动医院 | 欧美日韩福利 | 成人av网站在线观看 | 天天天天天天天干 | 日韩毛片 | 蜜桃精品视频在线 | 精品国产欧美一区二区三区成人 | 人人干97| 高清人人天天夜夜曰狠狠狠狠 | 国产伦精品一区二区三区高清 | 日韩av电影在线观看 | 99久久99热这里只有精品 | 久久久久久成人 | 欧美日韩精品中文字幕 | 久久久夜 | 91精品国产91久久久久青草 | 欧美一级视频免费看 | 亚洲高清一区二区三区 | 国产乱码精品一区二三赶尸艳谈 | 亚洲av毛片成人精品 | 在线观看欧美一区 | 天天影视综合 | 拍真实国产伦偷精品 | 亚洲人成人一区二区在线观看 | 免费观看黄色一级片 | 天天曰夜夜操 | 亚洲一区中文字幕 | 亚洲一区二区三 | 午夜网站视频 | 亚洲一区二区黄 | aacc678成免费人电影网站 | 91看片在线观看 | 免费在线观看91 |