JVM - 常见的JVM种类
HotSpot VM
HotSpot VM是絕對的主流。大家用它的時候很可能就沒想過還有別的選擇,
或者是為了遷就依賴了Oracle/Sun JDK某些具體實現的爛代碼而選擇用HotSpot VM省點心。
Oracle / Sun JDK、OpenJDK的各種變種(例如IcedTea、Zulu),用的都是相同核心的HotSpot VM。
當大家說起“Java性能如何如何”、“Java有多少種GC”、“JVM如何調優”云云,經常默認說的就是特指HotSpot VM。可見其“主流性”。
JDK8的HotSpot VM已經是以前的HotSpot VM與JRockit VM的合并版,也就是傳說中的“HotRockit”,只是產品里名字還是叫HotSpot VM。
這個合并并不是要把JRockit的部分代碼插進HotSpot里,而是把前者一些有價值的功能在后者里重新實現一遍。移除PermGen、Java Flight Recorder、jcmd等都屬于合并項目的一部分
不過要留意的是,這里的HotSpot VM特指“正常配置”版,而不包括“Zero / Shark”版。
Wikipedia那個頁面上把后者稱為“Zero Port”。用這個版本的人應該相當少,很多時候它的release版都build不成功
J9 VM
J9是IBM開發的一個高度模塊化的JVM。在許多平臺上,IBM J9 VM都只能跟IBM產品一起使用。這不是技術限制,而是許可證限制。
例如說在Windows上IBM JDK不是免費公開的,而是要跟IBM其它產品一起捆綁發布的;
使用IBM Rational、IBM WebSphere的話都有機會用到J9 VM(也可以自己選擇配置使用別的Java SE JVM)。
根據許可證,這種捆綁在產品里的J9 VM不應該用于運行別的Java程序…大家有沒有自己“偷偷的”拿來跑別的程序IBM也沒力氣管
(咳咳而在一些IBM的硬件平臺上,很少客戶是只買硬件不買配套軟件的,IBM給一整套解決方案,里面可能就包括了IBM JDK。
這樣自然而然就用上了J9 VM。
所以J9 VM得算在主流里,雖然很少是大家主動選擇的首選。
J9 VM的性能水平大致跟HotSpot VM是一個檔次的。有時HotSpot快些,有時J9快些。
不過J9 VM有一些HotSpot VM在JDK8還不支持的功能,最顯著的一個就是J9支持AOT編譯和更強大的class data sharing
JRockit
JRockit以前Java SE的主流JVM中還有JRockit,跟HotSpot與J9一起并稱三大主流JVM。
這三家的性能水平基本都在一個水平上,競爭很激烈。
自從Oracle把BEA和Sun都收購了之后,Java SE JVM只能二選一,JRockit就炮灰了。
JRockit最后發布的大版本是R28,只到JDK6;原本在開發中的R29及JDK7的對應功能都沒來得及完成項目就被終止了。
總結
以上是生活随笔為你收集整理的JVM - 常见的JVM种类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jvm 9种垃圾收集器
- 下一篇: jvm空间分配担保机制