JVM—【00】瞭解一下Java的幾種虛擬機
0.
- 解釋器:虛擬機將源代碼編譯成一種中間的字節碼(class文件),與機器平臺無關
- 編譯器:虛擬機將源代碼編譯成和本地機器平臺相關的機器語言。
- JIT編譯器:即時編譯器(Just In Time Compiler)
1. Sun Classic VM
- 1996年隨着Java1.0發佈的世界上第一款商用Java虛擬機,目前已經淘汰。
- 只能使用純解釋器的方式來執行Java代碼,代碼會逐行編譯,效率低下,運行慢。
- 沒有內置JIT,可是能夠外掛JIT編譯器,外掛後解釋器將不工做,徹底由JIT編譯器接管虛擬機的執行系統。
2. Exact VM
- Exact VM 使用準確式內存管理(Exact Memory Management),也就是說JVM能夠知道內存上某個位置的的具體類型;好比一個整數,他能夠知道是真正存的整數仍是某一個整數的引用。
- 編譯器和解釋器混合工做以及兩級即時編譯器。具有了一些高性能虛擬機的特色。
- 在JDK1.2的時候,Exact VM只在Salaris平臺上發佈了,後來就被 HotSpot取代。
3. HotSpot VM
- 繼承了Classic VM 和 Exact VM的優勢。
- HotSpot VM的熱點代碼探測能力能夠經過執行計數器找出最具備編譯價值的代碼,而後通知JIT編譯器以方法爲單位進行編譯。若是一個方法被頻繁調用,或方法中有效循環次數不少,將會分別觸發標準編譯和OSR(棧上替換)編譯動做。經過編譯器與解釋器恰當地協同工做,能夠在最優化的程序響應時間與最佳執行性能中取得平衡,並且無須等待本地代碼輸出才能執行程序,即時編譯的時間壓力也相對減少,這樣有助於引入更多的代碼優化技術,輸出質量更高的本地代碼。
4. JRockit
- BEA(已經被Oracle收購)開發的「世界上最快的JVM」(號稱)
- 主要作服務器端應用,不太關注程序的啓動速度,內部不包含解析器的實現,所有代碼都靠即時編譯器編譯後執行。
- 它的主要優點是垃圾收集器和MissionControl服務套件(它包括內存泄漏檢測器、JVM運行時分析器、管理控制檯,只一套以極低的開銷來監控、管理、分析的工具)
5. J9
- IBM公司開發的JVM。IBM Technology for Java virtual Machine. IT4J
- 相似於HotSpot,支持多種平臺,服務器,桌面應用,嵌入式等。
- 主要用於IBM公司的Java產品。
6. Dalvik
- Google公司本身設計用於Android平臺的虛擬機。
- 並非一個Java虛擬機,並無嚴格遵循JVM架構。Dalvik基於寄存器,而JVM基於棧。基於寄存器的虛擬機對於編譯後變大的程序來講,在它們執行的時候,花費的時間更短。
- 它是使用在Android中的Java執行環境,不過它不是class文件,它是Dex,即Dalvik executable.
7. Microsoft JVM
- 不用解釋,微軟出的JVM。只有windows平臺能運行。。。你懂得。反正已經涼了。
- 當時是速度最快的JVM。後來兩家公司撕B後就涼了。當時被告侵權,賠償了Sun公司一筆錢。
8. Azul VM
- 在HotSpot基礎上進行了一些改進的一個高性能Java虛擬機。
- 只能運行中他們公司的專用的設備上。
9. Liquid VM
- 它自己不須要操做系統,它本身就至關於一個操做系統,運行速度賊快。
10. 其餘
- 除了以上這些外,其實像國內也有本身的改的虛擬機 好比:阿里巴巴基於OpenJDK改的TaobaoVM,有興趣能夠本身去看看
關於我
- 座標杭州,普通本科在讀,計算機科學與技術專業,20年畢業,目前處於實習階段。
- 主要作Java開發,會寫點Golang、Shell。對微服務、大數據比較感興趣,預備作這個方向。
- 目前處於菜鳥階段,各位大佬輕噴,小弟正在瘋狂學習。
- 歡迎你們和我交流鴨!!!
歡迎關注本站公眾號,獲取更多信息