作者:田超凡
原创博文,仿冒必究,部分素材转载自每特教育蚂蚁课堂
(1)HotSpot VM
HotSpot VM是目前主流的虚拟机。像Oracle / Sun JDK、OpenJDK的各种变种(例如IcedTea、Zulu),用的都是相同核心的HotSpot VM。从Java SE 7开始,HotSpot VM就是Java规范的“参考实现”,JDK8的HotSpot VM已经是以前的HotSpot VM与JRockit VM的合并版,也就是传说中的“HotRockit”,只是产品里名字还是叫HotSpot VM。这个合并并不是要把JRockit的部分代码插进HotSpot里,而是把前者(HotSpotVM)一些有价值的功能在后者(JRockitVM)里重新实现一遍。移除PermGen、Java Flight Recorder、jcmd等都属于合并项目的一部分。
(2)J9 VM
J9是IBM开发的一个高度模块化的JVM。J9 VM的性能水平大致跟HotSpot VM是一个档次的。
(3)JRockit
以前Java SE的主流JVM中还有JRockit,跟HotSpot与J9一起并称三大主流JVM。这三家的性能水平基本都在一个水平上,竞争很激烈。自从Oracle把BEA和Sun都收购了之后,Java SE JVM只能二选一,JRockit就炮灰了。JRockit最后发布的大版本是R28,只到JDK6,原本在开发中的R29及JDK7的对应功能都没来得及完成项目就被终止了。
SUN Classic VM:第一款商用java虚拟机,1996年1月jdk1.0中带的java虚拟机,只能使用纯解释器的方式来执行java代码
Exact VM:准确式内存管理,编译器和解释器混合工作以及两级即时编译,只在Solaris平台发布
HotSpot VM:即时编译(JIT),节约了时间和存储,称霸武林
KVM:简单,轻量,高可以执行,主要在手机平台使用
JRockit:BEA,世界上最快的java虚拟机,专注服务端应用,优势:垃圾回收机制,MissionControl服务套件
j9:IBM Technology for java virtual Machines IT4J
dalvik:不能直接指向class文件,寄存器架构,执行dex文件,由class文件转化而来
MicrosoftJvm:只能在windows平台运行,
高性能java虚拟机
Azul VM:专用虚拟机,经HotSport改进得来,运行在本公司专有硬件中
Liquid VM:不需要操作系统的支持
taobao虚拟机:淘宝深度定制的产品,硬件依赖性比较高