Java虚拟机 - JVM的发展历程
执行引擎结构
Sun Classic VM
- 1996年随Java1.0版本发布,JDK1.4时被完全淘汰。
- 它只提供解释器。
- 如果使用JIT编译器,就需要进行外挂。但一旦使用了JIT编译器,JIT会接管虚拟机的执行系统。解释器就不再工作,解释器和编译器不能配合工作。
- 现在hotspot内置了此虚拟机
Exact VM
- 为了解决上一个虚拟机问题,JDK1.2时,Sun提供了此虚拟机。
- Exact Management:准确式内存管理
- 虚拟机可以知道内存中某个位置的数据是什么类型。
- 具备现代高性能虚拟机的雏形
- 热点探测
- 编译器与解释器混合工作模式
- 只在Solaris平台短暂使用,其它平台上还是Classic VM
- 英雄气短,终被Hotspot虚拟机替换
Hotspot VM
- JDK1.3时,Hotspot VM成为默认虚拟机
- 目前Hotspot占有绝对的市场地位。
- Hotspot指的就是热点代码探测技术。
- 通过计数器找到最具有编译价值的代码,触发即时编译或栈上替换
- 通过编译器与解释器协同工作,在最优化的程序响应时间与最佳执行性能中取得平衡。
BEA 的 JRockit
- 专注于服务器端应用
- 它可以不太关注程序的启动速度,因此JRockit 内部不包含解释器实现,全部代码都靠即时编译器编译后执行。
- 大量的行业基准测试显示,JRockit JVM是世界上最快的JVM
- 显著的性能提高(一些超过了70%)和硬件成本的减少(达50%)
- 优势全面的Java运行时解决方案组合
- JRockit 面对延迟敏感型应用的解决方案JRockit Real Time提供以毫秒或微妙级的JVM响应时间,适合财务、军事指挥、电信网络的需要。
- Mission Control服务套件:以极低的开销来监控、管理和分析生产环境中的应用程序的工具
- 2008年,BEA被Oracle收购
- Oracle大致在JDK8在Hotspot上移植了JRockit的优秀特征。
IBM 的J9
- 全称:IBM Technology for Java Virtual Machine,简称IT4J,内部代号:J9
- 市场定位与Hotspot接近,服务器端、桌面应用、嵌入式等多用途JVM
- 广泛用于IBM的各种Java产品。
- 目前,有影响力的三大商用虚拟机之一,也是号称是世界上最快的Java虚拟机。
- 2017年左右,IBM发布了开源J9 VM,命名为OpenJ9,交给Eclipse基金会管理,也称为 Eclipse OpenJ9