当前位置: 首页 > news >正文

深入理解JVM虚拟机第五篇:一些常用的JVM虚拟机(二)

文章目录

一:JRockit VM的介绍

二:J9 VM的介绍

三:KVM和CDC/CLDC Hotspot

四:Azul VM的介绍

五:Liquid VM的介绍

六:Apache Harmoney

七:Microsoft JVM

八:Taobao JVM

九:Dalvik VM虚拟机

十:Graal VM虚拟机


一:JRockit VM的介绍

        专注于服务器端应用

        它可以不太关注程序启动速度,因此JRockit内部不包含解析器实现,全部代码都靠即时编译器编译后执行。

        大量的行业基准测试显示,JRockit JVM是世界上最快的JVM。

        使用JRockit产品,客户已经体验到了显著的性能提高 (一些超过了70% )和硬件成本的减少(达50%)       

         全面的Java运行时解决方案组合JRockit面向延迟敏感型应用的解决方案JRockit Real Time提供以毫秒或微秒级的JVM响应时间,适合财务、军事指挥、电信网络的需要MissionControl服务套件,它是一组以极低的开销来监控、管理和分析生产环境中的应用程序的工具。

        2008年,BEA被Oracle收购。oracle表达了整合两大优秀虚拟机的工作,大致在JDK 8中完成。整合的方式是在HotSpot的基础上,移植JRockit的优秀特性。

        高斯林:目前就职于谷歌,研究人工智能和水下机器人

二:J9 VM的介绍

        全称:IBM Technology for Java Virtual Machine,简称IT4J,内部代号:J9

        市场定位与HotSpot接近,服务器端、桌面应用、嵌入式等多用途VM广泛用于IBM的各种Java产品。

        目前,有影响力的三大商用虚拟机之一,也号称是世界上最快的Java虚拟机

        2017年左右,IBM发布了开源J9 VM,命名为OpenJ9,交给Eclipse基金会管理,也称为 Eclipse openJ9

三:KVM和CDC/CLDC Hotspot

        oracle在Java ME产品线上的两款虚拟机为: CDC/CLDC HotSpotImplementation VM

        KVM (Kilobyte)是CLDC-HI早期产品目前移动领域地位尴尬,智能手机被Android和ios二分天下。KVM简单、轻量、高度可移植,面向更低端的设备上还维持自己的一片市场

        智能控制器、传感器
        老人手机、经济欠发达地区的功能手机

        所有的虚拟机的原则:一次编译,到处运行

四:Azul VM的介绍

        前面三大“高性能Java虚拟机使用在通用硬件平台上这里Azul VM和BEA Liquid VM是与特定硬件平台绑定、软硬件配合的专有虚拟机高性能Java虚拟机中的战斗机。

        Azul VM是Azul Systems公司在HotSpot基础上进行大量改进,运行于Azul Systems公司的专有硬件Vega系统上的Java虚拟机。

        每个Azul VM实例都可以管理至少数十个CPU和数百GB内存的硬件资源,并提供在巨大内存范围内实现可控的GC时间的垃圾收集器、专有硬件优化的线程调度等优秀特性。

        2010年,Azul Systems公司开始从硬件转向软件,发布了自己的zingJVM,可以在通用x86平台上提供接近于vega系统的特性。

五:Liquid VM的介绍

        Liquid VM高性能Java虚拟机中的战斗机

        BEA公司开发的,直接运行在自家Hypervisor系统上

        Liquid VM即是现在的JRockit VE (virtual Edition),LiquidVM不需要操作系统的支持,或者说它自己本身实现了一个专用操作系统的必要功能,如线程调度、文件系统、网络支持等。

        随着JRockit虚拟机终止开发,Liquid VM项目也停止了。

六:Apache Harmoney

        Apache也曾经推出过与JDK 1.5和JDK 1.6兼容的Java运行平台Apache Harmony。

        它是IBM和Intel联合开发的开源JVM,受到同样开源的openJDK的压制,Sun坚决不让Harmony获得JCP认证,最终于2011年退役,IBM转而参与OpenJDK

        虽然目前并没有Apache Harmony被大规模商用的案例,但是它的Java类库代码吸纳进了Android SDK。

七:Microsoft JVM

        微软为了在IE3浏览器中支持Java Applets,开发了Microsoft JVM。只能在window平台下运行。

        但确是当时windows下性能最好的Java VM。1997年,Sun以侵犯商标、不正当竞争罪名指控微软成功,赔了sun很多钱。

        微软在windowsXP SP3中抹掉了其VM。现在windows上安装的idk都是HotSpot。

八: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 虚拟机进程中实现共享

        使用crc32指今实现 JVM intrinsic 降低JNI 的调用开销

        PMU hardware的Java profiling tool 和诊断协助功能

        针对大数据场景的ZenGCtaobao vm应用在阿里产品上性能高,硬件严重依赖intel的cpu,损失了兼容性,但提高了性能

         目前已经在淘宝、天猫上线,把oracle 官方JVM 版本全部替换了

九:Dalvik VM虚拟机

        谷歌开发的,应用于Android系统,并在Android2.2中提供了JIT,发展迅猛

        Dalvik VM 只能称作虚拟机,而不能称作“Java 虚拟机”,它没有遵循 Java虚拟机规范

        不能直接执行 Java的 class 文件

        基于寄存器架构,不是jvm的栈架构。

        执行的是编译以后的dex(Dalvik Executable) 文件。执行效率比较高。它执行的dex (Dalvik Executable) 文件可以通过class文件转化而来,使用Java语法编写应用程序,可以直接使用大部分的Java API等。

        Android 5.0 使用支持提前编译 (Ahead of Time Compilation,AOT)的ART VM替换Dalvik VM。

十: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希望最大。但是Java的软件生态没有丝毫变化。

         具体JVM的内存结构,其实取决于其实现,不同厂商的JVM,或者同一厂商发布的不同版本,都有可能存在一定差异。本套文章主要以oracle HotSpot VM为默认虚拟机。

http://www.lryc.cn/news/165873.html

相关文章:

  • 导数公式及求导法则
  • SpringMVC系列(六)之JSON数据返回以及异常处理机制
  • 民安智库(北京第三方窗口测评)开展汽车消费者焦点小组座谈会调查
  • 【CVPR2021】MVDNet论文阅读分析与总结
  • IDEA指定Maven settings file文件未生效
  • swift UI 和UIKIT 如何配合使用
  • c语言练习题55:IP 地址⽆效化
  • nvidia-persistenced 常驻
  • leetcode 42, 58, 14(*)
  • SpringCloud-微服务CAP原则
  • K8S:Yaml文件详解
  • 机器人连续位姿同步插值轨迹规划—对数四元数、b样条曲线、c2连续位姿同步规划
  • 三维模型3DTile格式轻量化压缩的遇到常见问题与处理方法分析
  • 2023-简单点-开启防火墙后,ping显示请求超时;windows共享盘挂在不上
  • 华为Java工程师面试题
  • 大数据Flink(七十四):SQL的滑动窗口(HOP)
  • Hystrix和Sentinel熔断降级设计理念
  • 获取Windows 10中的照片(旧版)下载
  • 【Redis】Redis作为缓存
  • IDEA(2023)解决运行乱码问题
  • 零基础学前端(二)用简单案例去理解 HTML 、CSS 、JavaScript 概念
  • 线性矩阵不等式(LMI)在控制理论中的应用
  • 如何在Python爬虫程序中使用HTTP代理?
  • ARM架构指令集--专用指令
  • 免费IP类api接口:含ip查询、ip应用场景查询、ip代理识别、IP行业查询...
  • Android Studio 中AGP ,Gradle ,JDK,SDK都是什么?
  • 算法通关18关 | 回溯模板如何解决复原IP问题
  • Layui快速入门之第五节 导航
  • 使用分支——Git Checkout
  • 【2023】数据挖掘课程设计:基于TF-IDF的文本分类