当前位置: 首页 > 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为默认虚拟机。

相关文章:

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

文章目录 一:JRockit VM的介绍 二:J9 VM的介绍 三:KVM和CDC/CLDC Hotspot 四:Azul VM的介绍 五:Liquid VM的介绍 六:Apache Harmoney 七:Microsoft JVM 八:Taobao JVM 九&a…...

导数公式及求导法则

目录 基本初等函数的导数公式 求导法则 有理运算法则 复合函数求导法 隐函数求导法 反函数求导法 参数方程求导法 对数求导法 基本初等函数的导数公式 基本初等函数的导数公式包括: C0(x^n)nx^(n-1)(a^x)a^x*lna(e^x)e^x(loga(x))1/(xlna)(lnx)1/x(sinx)cos…...

SpringMVC系列(六)之JSON数据返回以及异常处理机制

目录 前言 一. JSON概述 二. JSON数据返回 1. 导入pom依赖 2. 添加配置文件(spring-mvc.xml) 3. ResponseBody注解使用 4. 效果展示 5. Jackson介绍 三. 全局异常处理 1. 为什么要全局异常处理 2. 异常处理思路 3. 异常处理方式一 4. 异常处…...

民安智库(北京第三方窗口测评)开展汽车消费者焦点小组座谈会调查

民安智库近日开展了一场汽车消费者焦点小组座谈会,旨在深入了解目标消费者对汽车功能的需求和消费习惯,为汽车企业提供有针对性的解决方案。 在焦点小组座谈会中,民安智库公司(第三方市容环境指数测评)邀请了一群具有…...

【CVPR2021】MVDNet论文阅读分析与总结

Challenge: 现有的目标检测器主要融合激光雷达和相机,通常提供丰富和冗余的视觉信息 利用最先进的成像雷达,其分辨率比RadarNet和LiRaNet中使用的分辨率要细得多,提出了一种有效的深度后期融合方法来结合雷达和激光雷达信号。 MV…...

IDEA指定Maven settings file文件未生效

背景:在自己电脑上配置的时候,由于公司项目和我自己的项目的Maven仓库不一致,我就在项目中指定了各自的Maven配置文件。但是我发现公司的项目私有仓库地址IDEA总是识别不到! 俩个配置文件分别是: /Users/sml/Mine/研发…...

swift UI 和UIKIT 如何配合使用

SwiftUI和UIKit可以在同一个iOS应用程序中配合使用。它们是两个不同的用户界面框架,各自有自己的优势和特点。在现实开发中,很多iOS应用程序并不是一开始就完全采用SwiftUI或UIKit,而是根据需要逐步引入SwiftUI或者使用两者共存。 SwiftUI的…...

c语言练习题55:IP 地址⽆效化

IP 地址⽆效化 题⽬描述: 给你⼀个有效的 IPv4 地址 address ,返回这个 IP 地址的⽆效化版本。 所谓⽆效化 IP 地址,其实就是⽤ "[.]" 代替了每个 "."。 • ⽰例 1: 输⼊:address "1.1.1.…...

nvidia-persistenced 常驻

本文地址&#xff1a;blog.lucien.ink/archives/542 发现每次执行 nvidia-smi 都特别慢&#xff0c;发现是需要 nvidia-persistenced 常驻才可以&#xff0c;这个并不会在安装完驱动之后自动配置&#xff0c;需要手动设置一个自启。 cat <<EOF >> /etc/systemd/sy…...

leetcode 42, 58, 14(*)

42. Trapping Rain Water 1.暴力解法&#xff08;未通过&#xff09; class Solution { public:int trap(vector<int>& height) {int n height.size();int res 0;for(int i0; i<n; i){int r_max 0, l_max 0;for(int j i; j<n; j)r_max max(r_max, heigh…...

SpringCloud-微服务CAP原则

接上文 SpringCloud-Config配置中心 到此部分即微服务的入门。 总的来说&#xff0c;数据存放的节点数越多&#xff0c;分区容忍性就越高&#xff0c;但要复制更新的次数就越多&#xff0c;一致性就越难保证。同时为了保证一致性&#xff0c;更新所有节点数据所需要的时间就…...

K8S:Yaml文件详解

目录 一.Yaml文件详解 1.Yaml文件格式 2.YAML 语法格式 二.Yaml文件编写及相关概念 1.查看 api 资源版本标签 2.yaml编写案例 &#xff08;2&#xff09;Deployment类型编写nginx服务 (3&#xff09;k8s集群中的port介绍 &#xff08;5&#xff09;快速编写yaml文件 …...

机器人连续位姿同步插值轨迹规划—对数四元数、b样条曲线、c2连续位姿同步规划

简介&#xff1a;Smooth orientation planning is benefificial for the working performance and service life of industrial robots, keeping robots from violent impacts and shocks caused by discontinuous orientation planning. Nevertheless, the popular used quate…...

三维模型3DTile格式轻量化压缩的遇到常见问题与处理方法分析

三维模型3DTile格式轻量化压缩的遇到常见问题与处理方法分析 三维模型的轻量化压缩是一项技术挑战&#xff0c;特别是在处理复杂的3DTile格式时。下面列举了一些处理过程中可能遇到的常见问题以及相应的处理方法&#xff1a; 模型精度损失&#xff1a;在进行压缩处理时&#x…...

2023-简单点-开启防火墙后,ping显示请求超时;windows共享盘挂在不上

情景描述 树莓派 挂载 windows共享盘 之前一直可以&#xff0c;突然有一天不行了 ping xxxx不通了 一查&#xff0c;或许是服务器被同事开了防火墙&#xff0c;默认关闭了ping的回显 操作&#xff1a; 开启ping回显cmd ping通了&#xff0c;但是挂载还是不行, 显示 dmesg命…...

华为Java工程师面试题

常见问题&#xff1a; 什么是Java虚拟机&#xff08;JVM&#xff09;&#xff1f;它与现实中的计算机有什么不同&#xff1f;Java中的基本数据类型有哪些&#xff1f;它们的范围是什么&#xff1f;什么是引用类型&#xff1f;Java中的引用类型有哪些&#xff1f;什么是对象&am…...

大数据Flink(七十四):SQL的滑动窗口(HOP)

文章目录 SQL的滑动窗口(HOP) SQL的滑动窗口(HOP) 滑动窗口定义:滑动窗口也是将元素指定给固定长度的窗口。与滚动窗口功能一样,也有窗口大小的概念。不一样的地方在于,滑动窗口有另一个参数控制窗口计算的频率(滑动窗口滑动的步长)。因此,如果滑动的步长小于窗口大…...

Hystrix和Sentinel熔断降级设计理念

目录 1 基本介绍2 Hystrix信号量和线程池区别2.1 信号量模式2.2 线程池模式2.3 注意 3 Sentinel介绍 1 基本介绍 Sentinel 和 Hystrix 的原则是一致的: 当检测到调用链路中某个资源出现不稳定的表现&#xff0c;例如请求响应时间长或异常比例升高的时候&#xff0c;则对这个资源…...

获取Windows 10中的照片(旧版)下载

Windows 10中的新版照片应用&#xff0c;目前发现无法直接打开部分iOS设备上存储的照片。需要使用照片&#xff08;旧版&#xff09;才行。 但目前应用商店中无法直接搜索到照片&#xff08;旧版&#xff09;&#xff0c;因此笔者提供如下链接&#xff0c;可以直接访问并呼出W…...

【Redis】Redis作为缓存

【Redis】Redis常见面试题&#xff08;2&#xff09; 文章目录 【Redis】Redis常见面试题&#xff08;2&#xff09;1. 缓存2. Redis作为缓存2.1 缓存雪崩2.2 缓存穿透2.3 缓存击穿2.4 缓存雪崩、缓存穿透、缓存击穿的区别2.5 缓存预热2.6 如何保证缓存和MySQL双写一致 【Redis…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...