JVM发展历程
Sun Classic VM 世界上第一款商用 Java虚拟机 1996 Java1.0 Sun发布 JDK1.4被完全淘汰 现在hotsrot内置了此虚拟机,内部只有解释器,没有JIT即时编译器【解释器是发现在执行代码过程中有的反复被执行,就叫热点代码,把这些热点代码即时编译成本地机器指令缓存起来,提升效率】(现在的jvm两者是都有的)
Sun Exact VM 为了解决上一个VM留下的问题,jdk1.2时sum提供此虚拟机,声明周期很短,只在Solaris平台短暂使用,后被Hotspot代替
Sun HotSpot 最初由小公司设计,1997年被Sun收购,2009,Sun被甲骨文收购,JDK1.3,成为默认虚拟机,目前占有绝对的市场地位,Sun/Oracle默认虚拟机OpenJDK默认虚拟机
从左面,移动端、服务器、嵌入式都有应用
顾名思义,热点代码探测技术,触发时编译或栈上替换(意思是对象不一定创建在堆,也可以在栈上创建对象,GC方便效率更高)
通过编译器与解释器协同工作,在最优化的响应时间与最佳执行性能中取得平衡
BEA JRocket 专注于服务器端应用,不太关注于程序启动速度,关注响应时间,所以他不包含解释器,全部代码都考即时编译器JIT编译后执行
大量的行业基本测试,JRocket JVM 是世界上最快的JVM【JMC主要可以监控内存泄漏】
2008BEA被Oracle收购,在JDK8中大致完成了两大虚拟机的整合,在HotSpot基础上移植JRocket的优秀特性
IBM J9 全称:IBM Technology for Java Virtual Machine 简称IT4J,内部代号J9
市场定位:与HotSpot类似服务器端、桌面应用、嵌入式等多用途VM
广泛使用与IBM的各种Java产品,17年IBM开源J9:OpenJ9
Azul VM 前边三大“高性能虚拟机”使用在硬件通用平台,而这个与特定平台绑定,软硬配合的专有虚拟机,Azul System在Hotspot上改造,用在该公司专有硬件系统Vega上
每个Azul可以管理至少数10个CPU和数百GB的内存硬件资源,并提供在巨大内存范围内实现可控的GC时间垃圾收集器,专有硬件优化的线程调度
2010Azul从硬专软,发布ZingJVM
BEA Liquid VM 高性能Java虚拟机,直接运行在自家Hypervisor系统,Liquid VM即现在的JRocket VE(Virtual Edition)
Apache Harmony
Microsoft JVM
Taobao JVM
Dalvik VM:
Graal VM
2018.4 Oracle Labs公开Graal VM,号称“Run Programs Faster Anywhere”