JVM 篇:虛擬機種類

通用平臺的虛擬機

Classic VM

  • JDK1 與 JDK2 的官方默認虛擬機,世界第一種 java 虛擬機
  • 通過純解釋器執行 Java 代碼,即時編譯器只能通過外掛的形式存在,並且不能與解釋器一起運行。(那個時候的 Java 很慢)

Exact VM

  • Sun 公司爲了解決 Classic VM 的效率問題而計劃研發的,但只在 Solaris 系統上發佈過,後來就被 HotSpot 取代了
  • 因其使用準確式內存管理而聞名。(知道內存中某一塊區域存放的是哪一種數據結構,有利於垃圾收集)

HotSpot

  • JDK3 之後的官方默認虛擬機
  • 同樣有準確式內存管理
  • 因其熱點探測技術而聞名。(知道哪一段代碼經常執行,將其編譯成機器代碼,提高運行效率)

JRockit

  • BEA 公司研發的,對服務端高度優化的虛擬機
  • 其垃圾收集機制和 MissionControl 服務套件,一直處於 Java 虛擬機的領先水平
  • Oracle 在 2008 年收購 BEA 公司,在 2009 年收購 Sun 公司。Oracle 計劃從 JDK8 開始將兩種虛擬機融合成一種。(JDK8 的 HotSpot 已經放棄用永久代來實現方法區,轉而使用元空間)

J9

  • IBM 公司研發,主要爲了在自家研發的產品上跑 Java 程序

其他虛擬機

Dalvik VM

  • Google 爲 Android 開發而研發的虛擬機,不是 java 虛擬機,但關係很密切
  • Dalvik VM 基於寄存器運行,而 JVM 基於棧
  • Dalvik 通過將 class 文件轉化爲 dex 文件來運行

Microsoft JVM

  • 微軟曾經在其操作系統上開發了一款 win 專用的 JVM (Win 平臺下最快的虛擬機),後和 Sun 打官司輸掉,該項目停止。

Apache Harmony

  • Apache 開發的 JDK,但一直沒有得到 Sun 公司的授權,Apache 因此退出了 JCP
  • 後 Sun 公司開源了 OpenJDK,Apache Harmony 項目就變得不太熱門

64 位虛擬機

  • 因爲指針膨脹和數據對齊補白等緣故,64 位虛擬機比 32 位虛擬機所需要消耗的內存更大 (約多 10% - 30% 的開銷,性能相差 15%)
  • 現在大多數商用系統都是通過虛擬集羣的方式來支持大於 4G 的內存。
  • 64 位的虛擬機還有一段路要走
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章