各大虚拟机介绍


虚拟机的雏形

SUN Classic VM

  • Java1.0时Sun公式发布,世界上第一款商用虚拟机,JDK1.4时完全被淘汰

  • 内部只提供了解释器,运行比较慢

  • 如果使用JIT编译器需要进行外挂,而且一旦使用了JIT编译器,解释器就不会再工作,编译器和解释器不能配合工作

  • 现在HotSpot内置了此虚拟机

Exact VM

  • 为了解决上一个虚拟机的问题
  • 全称 Exact Memory Management 准确式内存管理
  • 具备现代高性能虚拟机的雏形 热点探测、编译器和解释器混合工作
  • 只在Solaris平台短暂使用,终被HotSpot虚拟机替换

现在的三大虚拟机

HosSpot VM

  • JDK1.3成为默认的虚拟机

  • HotSpot占有绝对的市场地位

  • 不管是现在仍广泛使用JDK6,还是使用不较多的Jdk8,默认的虚拟机都是HotSpot

  • 服务端、桌面、移动端、嵌入式都有应用

  • HotSpot指的是它的热点代码探测技术

    • 通过计数器找到最具有编译价值的代码,触发即时编译或栈上替换

    • 通过编译器和解释器协同工作,在程序响应时间和最佳执行性能中取得平衡

JRockit VM

  • 专注于服务端应用,舍弃了解释器,全部代码靠即时编译器编译后执行

  • JRockit VM 是世界上最快的虚拟机

IBM J9

  • 全称 IBM Technology for Java Virtual Machine 简称IT4J 内部代号J9
  • 市场定为与HotSpot接近,服务端、桌面、嵌入式等多用途VM
  • 广泛用于IBM的各种Java产品
  • 有影响力的三大商用虚拟机之一

国内的虚拟机

TaoBao JVM

  • 有ALiJVM团队开发。阿里,国内使用Java最强大的公司,覆盖云计算、金融、物流、电商等众多领域,需要解决高并发、高可用、分布式等问题。

  • 基于OpenJDK开发自己的定制版本AlibabaJDK,简称AJDK。是整个阿里Java体系的基石。

  • 基于OpenJDK HotSpot VM 发布的国内第一个优化、深度定制且开源的高性能服务器版Java虚拟机。

    • 创新的GCIH(GC invisible heap) 技术实现了off-heap, 即将生命周期较长的Java对象从heap中移到heap之外,并且GC不能管理GCIH内部的Java对象,以此达到降低GC回收频率和提升GC的回收效率的目的。
    • GCIH中的对象还能够在多个Java虚拟机进程中共享
    • 针对大数据场景的ZenGC
  • TaoBao JVM应用在阿里产品上性能高,硬件严重依赖intel的cpu,损失了兼容性,但提高了性能。


未来有可能替代HotSpot的虚拟机

Graal VM

  • 2018年4月, Oracle Labs公开了Graal VM,号称“Run Programs Faster Anywhere”, 勃勃野心。与1995年java的“write once,run anywhere”遥相呼应。
  • Graal VM在HotSpot VM基础上增强而成的跨语言全栈虚拟机,可以作为“任何语言”的运行平台使用。语言包括:Java、Scala、Groovy、kotlin、C、C++、JavaScript、Ruby、Python、R等。
  • 支持不同语言混用对方的接口对象,支持这些语言使用已经编写好本地库文件
  • 工作原理是将这些语言的源代码或源代码编译后的中间格式,通过解释器转换为能被Graal VM接收的中间表示。Graal VM提供Truffle工具集快速构建念面向一种新语言的解释器。在运行时还能即时编译优化,获得比原生编译器更优秀的执行效率。
  • 如果说HotSpot有一天真的有可能被取代,Graal VM希望最大。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值