JVM---生命週期與發展歷程

JVM

JVM生命週期:

虛擬機的啓動:

是通過引導類加載器(bootstrap class loader)創建一個初始類(initial class) 來完成的,這個類是由虛擬機的具體實現指定的。

虛擬機的執行:

  • 一個運行中的Java虛擬機有着一個清晰的任務:執行Java程序。
  • 程序開始執行時他才運行,程序結束時他就停止。
  • 執行一個所謂的Java程序的時候,真真正正在執行的是一個叫做Java虛擬機的進程。

JVM發展歷程

Sun Classic VM

  • 早在1996年Javal.0版本的時候,Sun公司發佈了一款名爲Sun ClassicVM的Java虛擬機,它同時也是世界.上第- - 款商用Java虛擬機,JDK1 .4時完全被淘汰。
  • 這款虛擬機內部只提供解釋器。
  • 如果使用JIT編譯器,就需要進行外掛。但是一旦使用了JIT編譯器,JIT就會接管虛擬機的執行系統。解釋器就不再工作。解釋器和編譯器不能配合工作
  • 現在hotspot內置了此虛擬機。

Exact VM

  • 爲了解決上一個虛擬機問題,jdk1.2時,sun提供了此虛擬機。
  • Exact Memory Management: 準確式內存管理
    • 也可以叫Non-Conservative/ Accurate Memory Management
    • 虛擬機可以知道內存中某個位置的數據具體是什麼類型。
  • 具備現代高性能虛擬機的雛形
    • 熱點探測
    • 編譯器與解釋器混合工作模式
  • 只在Solaris平臺短暫使用,其他平臺,上還是classic Vm
    • 英雄氣短,終被Hotspot虛擬機替換

SUN公司的HotSpot VM

  • HotSpot歷史
    • 最初由一-家名爲“Longview Technologies"的小公司設計
    • 1997年, 此公司被Sun收購; 2009年,Sun公司被甲骨文收購。
    • JDK1.3時,HotSpot VM成爲默認虛擬機
  • 目前Hotspot佔有絕對的市場地位,稱霸武林。
    • 不管是現在仍在廣泛使用的JDK6,還是使用比例較多的JDK8中,默認的虛擬機都是HotSpot
    • Sun/Oracle JDK和OpenJDK的默認虛擬機
    • 因此本課程中默認介紹的虛擬機都是HotSpot,相關機制也主要是指HotSpot的GC機制。(比如其他兩個商用虛擬機都沒有方法區的概念)
  • 從服務器、桌面到移動端、嵌入式都有應用。
  • 名稱中的HotSpot指的就是它的熱點代碼探測技術。
    • 通過計數器找到最具編譯價值代碼,觸發即時編譯或棧上替換
    • 通過編譯器與解釋器協同工作,在最優化的程序響應時間與最佳執行性能中取得平衡

BEA的JRockit

  • 專注於服務器端應用
    • 它可以不太關注程序啓動速度,因此JRockit內部不包含解析器實現,全部代碼都靠即時編譯器編譯後執行。
  • 大量的行業基準測試顯示,JRockit JVM是世界上最快的JVM。
    • 使用JRockit產品,客戶已經體驗到了顯著的性能提高(一些超過了70%)和硬件成本的減少(達50%)。
  • 優勢:全面的Java運行時解決方案組合
    • JRockit面向 延遲敏感型應用的解決方案JRockit Real Time 提供以毫秒或微秒級的JVM響應時間,適合財務、軍事指揮、電信網絡的需要
    • MissionContro1服務套件,它是一組以極低的開銷來監控、管理和分析生產環境中的應用程序的工具。
  • 2008年,BEA被Oracle收購。
  • Oracle表達了整合兩大優秀虛擬機的工作,大致在JDK 8中完成。整合的方式是在HotSpot的基礎上,移植JRockit的優秀特性。
  • 高斯林:目前就職於谷歌,研究人工智能和水下機器人

IBM 的 J9

  • 全稱: IBM Technology for Java Virtual Machine,簡稱IT4J, 內部代號: J9
  • 市場定位與HotSpot接近, 服務器端、桌面應用、嵌入式等多用途VM
  • 廣泛用於IBM的各種Java產品。
  • 目前,有影響力的三大商用虛擬機之一,也號稱是世界上最快的Java虛擬機。
  • 2017年左右,IBM發佈 了開源J9 VM,命名爲openJ9,交給Eclipse基金會管理,也稱爲Eclipse OpenJ9

Azul VM

  • 前而三大“高性能Java虛擬機”使用在通用硬件平臺上
  • 這裏Azul VM和BEA Liquid VM是與特定硬件平臺綁定、軟硬件配合的專有虛擬機
    • 高性能Java虛擬機中 的戰鬥機
  • Azul VM是Azul Systems公司在HotSpot基礎.上進行大量改進,運行於Azul systems 公司的專有硬件Vega系統上的Java虛擬機。
  • 每個Azul VM實例都可以管理至少數十個CPU和數百GB內存的硬件資源,並提供在巨大內存範圍內實現可控的GC時間的垃圾收集器、專有硬件優化的線程調度等優秀特性。
  • 2010年,Azul Systems 公司開始從硬件轉向軟件,發佈了自己的Zing JVM,可以在通用x86平臺上提供接近於vega系統的特性。

TaobaoJVM

  • 由AliJVM團隊發佈。阿里,國內使用Java最強大的公司,覆蓋雲計算、金融、物流、電商等衆多領域,需 要解決高併發、高可用、分佈式的複合問題。有大量的開源產品。
  • 基於OpenJDK開發了自己的定製版本AlibabaJDK,簡稱AJDK。是整個阿里Java體系的基石。
  • 基於OpenJDK HotSpot VM發佈的國內第一個優化、 深度定製且開源的高性能服務器版Java虛擬機。
    • 創新的GCIH (GC invisible heap )技術實現了off-heap ,即將生命週期較長的Java對象從heap中移到heap之外,並且GC不能管理GCIH內部的Java對象,以此達到降低GC的回收頻率和提升GC的回收效率的目的。
    • GCIH中的對象還能夠在多個Java虛擬機進程中實現共享
    • 使用crc32 指令實現JVM intrinsic 降低JNI的調用開銷
    • PMU hardware 的Java profiling tool 和診斷協助功能
    • 針對大數據場景的ZenGC
  • taobao vm應用在阿里產品上性能高,硬件嚴重依賴intel的cpu,損失了兼容性,但提高了性能
    • 目前已經在淘寶、天貓上線,把Oracle 官方JVM版本全部替換了。

Graal VM

  • 2018年4月,Oracle Labs公開了Graal VM,號稱==“Run Programs Faster Anywhere”==, 勃勃野心。與1995年java的”write once, run anywhere "遙相呼應。
  • Graal VM在HotSpot VM基礎上增強而成的跨語言全棧虛擬機,可以作爲“任何語言”的運行平臺使用。語言包括: Java、Scala、Groovy、Kotlin; C、C++、JavaScript、Ruby、Python、R等
  • 支持不同語言中混用對方的接口和對象,支持這些語言使用已經編寫好的本地庫文件
  • 工作原理是將這些語言的源代碼或源代碼編譯後的中間格式,通過解釋器轉換爲能被Graal VM接受的中間表示。Graal VM提供Truffle.工具集快速構建面向一-種新語言的解釋器。在運行時還能進行即時編譯優化,獲得比原生編譯器更優秀的執行效率。
  • 如果說HotSpot有一天真的被取代,Graal VM希望最大。但是Java的軟件生態沒有絲毫變化。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章