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