什麼是HotSpot VM & 深刻理解Java虛擬機 JVM

參考 http://book.2cto.com/201306/25434.htmlhtml

另外,這篇文章也是從一個系列中得出的:
《深刻理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》
http://book.2cto.com/201306/25426.html

已經下載了這本書(60多M。。)
/Users/baidu/Documents/Data/Interview/Java

HotSpot程序員

提起HotSpot VM,相信全部Java程序員都知道,它是Sun JDK和OpenJDK中所帶的虛擬機,也是目前使用範圍最廣的Java虛擬機。
但不必定全部人都知道的是,這個目前看起來「血統純正」的虛擬機在最初並不是由Sun公司開發,而是由一家名爲「Longview Technologies」的小公司設計的;
甚至這個虛擬機最初並不是是爲Java語言而開發的,它來源於Strongtalk VM,
而這款虛擬機中至關多的技術又是來源於一款支持Self語言實現「達到C語言50%以上的執行效率」的目標而設計的虛擬機,Sun公司注意到了這款虛擬機在JIT編譯上有許多優秀的理念和實際效果,在1997年收購了Longview Technologies公司,從而得到了HotSpot VM。 HotSpot VM既繼承了Sun以前兩款商用虛擬機的優勢(如前面提到的準確式內存管理),也有許多本身新的技術優點,如它名稱中的HotSpot指的就是它的熱點代碼探測技術(其實兩個VM基本上是同時期的獨立產品,HotSpot還稍早一些,HotSpot一開始就是準確式GC,而Exact VM之中也有與HotSpot幾乎同樣的熱點探測。爲了Exact VM和HotSpot VM哪一個成爲Sun主要支持的VM產品,在Sun公司內部還有過爭論,HotSpot戰勝Exact並不能算技術上的勝利),HotSpot VM的熱點代碼探測能力能夠經過執行計數器找出最具備編譯價值的代碼,而後通知JIT編譯器以方法爲單位進行編譯。若是一個方法被頻繁調用,或方法中有效循環次數不少,將會分別觸發標準編譯和OSR(棧上替換)編譯動做。經過編譯器與解釋器恰當地協同工做,能夠在最優化的程序響應時間與最佳執行性能中取得平衡,並且無須等待本地代碼輸出才能執行程序,即時編譯的時間壓力也相對減少,這樣有助於引入更多的代碼優化技術,輸出質量更高的本地代碼。 在2006年的JavaOne大會上,Sun公司宣佈最終會把Java開源,並在隨後的一年,陸續將JDK的各個部分(其中固然也包括了HotSpot VM)在GPL協議下公開了源碼,並在此基礎上創建了OpenJDK。這樣,HotSpot VM便成爲了Sun JDK和OpenJDK兩個實現極度接近的JDK項目的共同虛擬機。 在2008年和2009年,Oracle公司分別收購了BEA公司和Sun公司,這樣Oracle就同時擁有了兩款優秀的Java虛擬機:JRockit VM和HotSpot VM。Oracle公司宣佈在不久的未來(大約應在發佈JDK 8的時候)會完成這兩款虛擬機的整合工做,使之優點互補。整合的方式大體上是在HotSpot的基礎上,移植JRockit的優秀特性,譬如使用JRockit的垃圾回收器與MissionControl服務,使用HotSpot的JIT編譯器與混合的運行時系統。
相關文章
相關標籤/搜索