Java虛擬機(JVM)家族發展史及版本對比

Java虛擬機(JVM)家族發展史及版本對比在這里插入圖片描述


一、JVM家族發展史

1. 早期階段(1996-2000)
  • Classic VM(Java 1.0-1.1)

    • 廠商:Sun Microsystems(Oracle前身)。
    • 特點
      • 首個JVM實現,支持基本的字節碼解釋執行。
      • 無JIT編譯器,性能較低。
      • 垃圾回收簡單(標記-清除算法)。
    • 適用場景:早期Java Applet和簡單應用。
  • Just-In-Time(JIT) VM(Java 1.1.4+)

    • 改進:引入JIT編譯器,將熱點代碼編譯為本地代碼提升性能。
    • 局限性:僅對特定方法優化,整體性能仍有限。

2. 成熟階段(2000-2010)
  • HotSpot JVM(Java 1.3+,2000年)
    • 廠商:Sun Microsystems(后由Oracle維護)。
    • 核心特性
      • 分代垃圾回收(Young/Old代劃分)。
      • 自適應優化(Adaptive Optimization,動態調整JIT策略)。
      • Server模式與Client模式(高性能服務器 vs. 輕量級客戶端)。
    • 關鍵版本
      • Java 5(1.5):引入并發標記清除(CMS)垃圾回收器。
      • Java 6:優化JIT編譯器,支持動態編譯更多代碼。
      • Java 7:改進G1垃圾回收器(實驗性)。

3. 現代化階段(2010至今)
  • HotSpot JVM持續演進

    • Java 8-11
      • G1成為默認GC(Java 9起)。
      • ZGC(可中斷暫停GC)(Java 11預覽,Java 15正式版)。
      • Shenandoah GC(Java 12引入,低延遲優化)。
    • Java 14+
      • Vector API(SIMD指令優化)。
      • 虛擬線程(Virtual Threads)(Java 19正式版,輕量級并發)。
  • 開源與生態擴展

    • OpenJDK(2006年開源):
      • 成為JVM實現的開源基準,Oracle JDK基于此構建。
      • 社區貢獻者包括Red Hat、Amazon、IBM等。
    • 替代JVM實現
      • GraalVM(Oracle,2017年):
        • 支持多語言(Java/JavaScript/Ruby等)。
        • Graal編譯器:AOT編譯(Substrate VM)提升啟動速度。
        • Truffle框架:動態語言優化。
      • Eclipse OpenJ9(IBM,2017年開源):
        • 低內存占用,適合微服務和容器化部署。
        • 支持JIT和AOT混合編譯。
      • Azul Zing(Azul Systems,2004年):
        • 專為低延遲設計,C4垃圾回收器(無停頓GC)。
        • 適用于高頻交易、實時系統。
  • 移動與嵌入式JVM

    • Dalvik VM(Android 1.5-4.4):
      • 針對移動設備優化,執行.dex文件(非.class)。
      • ART(Android Runtime)(Android 5.0+):
        • AOT編譯(應用安裝時編譯為原生代碼)。
        • 替代Dalvik,提升性能和內存效率。

二、關鍵虛擬機對比

1. HotSpot JVM(Oracle JDK/OpenJDK)
  • 適用場景:企業級應用、服務器端、微服務。
  • 核心特性
    • 垃圾回收器:Serial、Parallel、CMS、G1、ZGC、Shenandoah。
    • JIT編譯:C1(客戶端)、C2(服務端)。
    • 模塊化(Java 9+):JPMS支持模塊化JDK。
  • 優勢:生態成熟、兼容性高、社區支持強。

2. GraalVM
  • 適用場景:混合語言應用、高性能微服務、AOT編譯場景。
  • 核心特性
    • 多語言支持:Java、JavaScript、Python、Ruby等。
    • Substrate VM:AOT編譯生成獨立本機鏡像(啟動快、占用小)。
    • Graal編譯器:替代C2編譯器,優化復雜代碼。
  • 優勢:跨語言協作、啟動性能優化。

3. Eclipse OpenJ9
  • 適用場景:容器化部署、內存敏感環境、云原生應用。
  • 核心特性
    • 低內存占用:比HotSpot減少30%-50%內存。
    • JIT/AOT混合編譯:提前編譯部分代碼提升啟動速度。
    • Eclipse基金會維護:與Eclipse生態深度集成。
  • 優勢:資源效率高、適合Kubernetes等容器環境。

4. Azul Zing
  • 適用場景:低延遲系統(如金融交易、實時分析)。
  • 核心特性
    • C4垃圾回收器:停頓時間<1ms(無STW)。
    • 無限制堆內存:支持TB級堆,適合大數據應用。
    • 性能分析工具:實時監控GC和線程行為。
  • 優勢:極致低延遲,適合高頻交易等場景。

5. Android ART
  • 適用場景:Android應用。
  • 核心特性
    • AOT編譯:應用安裝時編譯為原生代碼。
    • 增量編譯:運行時優化未編譯部分。
    • Profilo工具:性能分析與調試。
  • 優勢:啟動快、運行效率高,替代Dalvik的升級版。

6. IBM J9(舊版,被OpenJ9取代)
  • 歷史意義
    • IBM早期JVM實現,后開源為OpenJ9。
    • 支持Z/OS等大型主機系統。

三、表格總結:JVM家族版本及特性對比
虛擬機名稱廠商/來源發布時間核心特性適用場景優勢與局限
Classic VMSun Microsystems1996純解釋執行,無JIT早期Java Applet性能低,僅基礎功能支持
HotSpot JVMOracle/OpenJDK2000分代GC、JIT編譯、G1/ZGC/Shenandoah、模塊化(Java 9+)企業級應用、服務器生態成熟,但資源占用較高
GraalVMOracle2017多語言支持、AOT編譯(Substrate VM)、Graal編譯器混合語言、微服務、AOT場景需學習成本,某些GC特性依賴HotSpot
Eclipse OpenJ9IBM/Eclipse2017低內存占用、JIT/AOT混合編譯容器化、云原生性能調優復雜,社區支持有限
Azul ZingAzul Systems2004C4無停頓GC、TB級堆內存、低延遲高頻交易、實時系統閉源商業版,成本較高
Android ARTGoogle2014AOT編譯、增量編譯、Profilo工具Android應用專為移動優化,不兼容桌面JVM
Dalvik VMGoogle2008針對移動設備優化,執行.dex文件Android 1.5-4.4性能較低,已被ART取代

四、關鍵總結
  • HotSpot JVM:Java生態的核心,持續演進(GC算法、編譯器優化)。
  • GraalVM:多語言、AOT編譯的革新,適合混合架構。
  • OpenJ9:資源效率優先,適合容器化部署。
  • Zing:低延遲領域的標桿,專為極端場景設計。
  • ART:移動領域的標準,替代Dalvik提升性能。
  • 未來趨勢
    • 虛擬線程(Java 20):解決線程阻塞問題,提升并發能力。
    • AOT編譯(GraalVM/Substrate):優化啟動時間和部署體積。
    • 低延遲GC(ZGC/Shenandoah):擴展實時系統適用性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77072.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77072.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77072.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嘻游電玩三端客戶端部署實戰:PC + Android + iOS 環境全覆蓋教程

本篇文章將針對“網狐系列嘻游電玩組件”的三端客戶端&#xff08;PC端、安卓端、iOS端&#xff09;進行詳細部署實操講解。文章將以實測部署為核心&#xff0c;提供資源結構說明、平臺適配調整、打包配置、常見問題修復&#xff0c;并輔以必要的關鍵配置代碼。 一、客戶端資源…

LabVIEW實現Voronoi圖繪制功能

該 LabVIEW 虛擬儀器&#xff08;VI&#xff09;借助 MathScript 節點&#xff0c;實現基于手機信號塔位置計算 Voronoi 圖的功能。通過操作演示&#xff0c;能直觀展示 Voronoi 圖在空間劃分上的應用。 各部分功能詳細說明 隨機地形創建部分 功能&#xff1a;根據 “Maximum a…

web刷題筆記

2024isctf ezrce 禁用了一些關鍵字符&#xff0c;查詢函數&#xff0c;系統執行函數&#xff0c;執行函數都有&#xff0c;空格也和斜桿也禁用了&#xff0c;但是其他一些很大一部分字符都沒有禁用&#xff0c;屬于關鍵詞禁用的類型&#xff0c;正常的步驟是去查一下列表&#…

集結號海螺捕魚游戲源碼解析(第二篇):水滸傳捕魚模塊邏輯與服務器幀同步詳解

本篇將全面解構“水滸傳”子游戲的服務端核心邏輯、幀同步機制、魚群刷新規則、客戶端命中表現與服務器計算之間的協同方式&#xff0c;聚焦于 C 與 Unity3D 跨端同步的真實實現過程。 一、水滸傳捕魚模塊資源結構 該模塊包含三部分核心目錄&#xff1a; 子游戲/game_shuihuz…

【產品經理從0到1】原型及Axure介紹

原型分類 原型的三種分類&#xff1a; 草圖原型&#xff1a;?繪稿&#xff0c;制作?便&#xff0c;修改不?便&#xff1b;低保真原型&#xff1a;簡單交互&#xff0c;?設計圖&#xff1b; 最好的原型是??灰的&#xff1b;?保真原型&#xff1a;復雜交互&#xff0c;有…

CVE-2024-23897-Jenkins 2.441之前版本存在任意文件讀取漏洞

1.漏洞介紹 Jenkins 2.441及更早版本&#xff0c;以及LTS 2.426.2及更早版本沒有禁用其CLI命令解析器的一個功能&#xff0c;該功能會將參數中字符后跟的文件路徑替換為該文件的內容&#xff0c;允許未經身份驗證的攻擊者讀取Jenkins控制器文件系統上的任意文件。 2.poc利用 下…

PostgreSQL性能調優與內核優化怎么做?

PostgreSQL 的高級性能調優和內核優化是PGCM認證的核心能力之一&#xff0c;也是企業級數據庫場景中解決性能瓶頸的關鍵手段。以下是直白易懂的實戰解析&#xff1a; 一、性能調優&#xff1a;讓數據庫“跑得更快” 1. 執行計劃優化 問題場景&#xff1a;一個復雜查詢耗時10秒…

DeepSeek是否采用了混合專家(MoE)架構?它如何提升模型效率?

引言 最近&#xff0c;關于DeepSeek是否采用混合專家&#xff08;Mixture of Experts&#xff0c;MoE&#xff09;架構的討論越來越多。MoE技術因其高效的計算特性&#xff0c;已經成為大模型訓練的熱門選擇。那么&#xff0c;DeepSeek到底有沒有用MoE&#xff1f;如果用了&am…

HTTP 請求頭與請求體:數據存儲的底層邏輯與實踐指南

文章目錄 一、數據承載的本質差異1.1、請求頭:元數據的 "集裝箱"1.2、請求體:業務數據的 "運輸艙"二、請求方式的選擇邏輯2.1、GET 請求:無體的輕量級交互2.2、POST 請求:體數據的主力軍2.3、PUT/PATCH 請求:體數據的更新場景三、參數屬性的深度解析3…

【網工第6版】第5章 網絡互聯②

目錄 ■ IPV6 ▲ IPV6報文格式 ◎ IPV6擴展報頭&#xff08;RFC2460&#xff09; ◎ IPv6相關協議 ▲ IPV6地址分類 ◎ IPv6地址基礎 ◎ IPv6地址舉例 ◎ IPv6地址分類 ◎ 特殊地址對比IPv4 vs IPv6 ▲ 過渡技術 本章重要程度&#xff1a;☆☆☆☆☆ ■ IPV6 與IPv4…

關于 梯度下降算法、線性回歸模型、梯度下降訓練線性回歸、線性回歸的其他訓練算法 以及 回歸模型分類 的詳細說明

以下是關于 梯度下降算法、線性回歸模型、梯度下降訓練線性回歸、線性回歸的其他訓練算法 以及 回歸模型分類 的詳細說明&#xff1a; 1. 梯度下降算法詳解 核心概念 梯度下降是一種 優化算法&#xff0c;用于尋找函數的最小值。其核心思想是沿著函數梯度的反方向逐步迭代&a…

[SpringBoot]快速入門搭建springboot

默認有spring基礎&#xff0c;不會一行代碼一行代碼那么細致地講。 SpringBoot的作用 Spring Boot是為了簡化Spring應用的創建、運行、調試、部署等而出現的。就像我們整個SSM框架時&#xff0c;就常常會碰到版本導致包名對不上、Bean非法參數類型的一系列問題&#xff08;原出…

ROS-真機向虛擬機器人映射

問題描述 ROS里的虛擬機械臂可以實現和真實機械臂的位置同步&#xff0c;真實機械臂如何動&#xff0c;ROS里的虛擬機械臂就如何動 效果 步驟 確保庫卡機械臂端安裝有EthernetKRL輔助軟件和KUKAVARPROXY 6.1.101&#xff08;它是一個 TCP/IP 服務器 &#xff0c;可通過網絡實…

ubuntu--安裝雙系統

教程 BIOS設置 啟動盤生成和ubuntu安裝 boot option #1設置USB為第一啟動項 rufus下載 官網&#xff1a; 鏈接 點擊“鏈接”下面的按鈕&#xff0c;即可下載。(注意查看自己的電腦是x64還是x84) 網盤下載&#xff1a; 鏈接

Python項目--基于計算機視覺的手勢識別控制系統

1. 項目概述 1.1 項目背景 隨著人機交互技術的快速發展&#xff0c;傳統的鍵盤、鼠標等輸入設備已經不能滿足人們對自然、直觀交互的需求。手勢識別作為一種非接觸式的人機交互方式&#xff0c;具有操作自然、交互直觀的特點&#xff0c;在智能家居、游戲控制、虛擬現實等領域…

LabVIEW數據采集與傳感系統

開發了一個基于LabVIEW的智能數據采集系統&#xff0c;該系統主要通過單片機與LabVIEW軟件協同工作&#xff0c;實現對多通道低頻傳感器信號的有效采集、處理與顯示。系統的設計旨在提高數據采集的準確性和效率&#xff0c;適用于各種需要高精度和低成本解決方案的工業場合。 項…

java Springboot使用扣子Coze實現實時音頻對話智能客服

一、背景 因公司業務需求&#xff0c;需要使用智能客服實時接聽顧客電話。 現在已經完成的操作是&#xff0c;智能體已接入系統進行對練&#xff0c;所以本文章不寫對聯相關的功能。只有coze對接&#xff5e; 扣子提供了試用Realtime WebSocket&#xff0c;點擊右上角setting配…

棧和字符串,力扣.43.字符串相乘力扣1047.刪除字符串中的所有相鄰重復項力扣.844比較含退格的字符串力扣227.基本計算器II

目錄 力扣.43.字符串相乘 力扣1047.刪除字符串中的所有相鄰重復項 力扣.844比較含退格的字符串 力扣227.基本計算器II 力扣.43.字符串相乘 我們剩下的落兩個數字即可。 class Solution {public static String multiply(String num1, String num2) {int mnum1.length();int n…

Spring Boot單元測試實戰指南:從零到高效測試

在Spring Boot開發中&#xff0c;單元測試是保障代碼質量的核心環節。本文將基于實際開發場景&#xff0c;手把手教你如何快速實現分層測試、模擬依賴、編寫高效斷言&#xff0c;并分享最佳實踐&#xff01; 一、5分鐘環境搭建 添加依賴 在pom.xml中引入spring-boot-starter-te…

React狀態提升深度解析:原理、實戰與最佳實踐

一、狀態提升的本質認知 React狀態提升&#xff08;State Lifting&#xff09;是組件間通信的核心模式&#xff0c;其本質是通過組件樹層級關系重構實現狀態共享。與傳統父子傳參不同&#xff0c;它通過將狀態提升到最近的共同祖先組件&#xff0c;建立單向數據流高速公路。 …