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

【jvm】jvm发展历程

目录

        • 一、Sun Classic VM
        • 二、Exact VM
        • 三、HotSpot VM
        • 四、JRockit
        • 五、J9
        • 六、KVM、CDC、CLDC
        • 七、Azul VM
        • 八、Liquid VM
        • 九、Apache Harmony
        • 十、Microsoft JVM
        • 十一、Taobao JVM
        • 十二、Dalvik VM

一、Sun Classic VM

  • 1.1996年java1.0版本,sun公司发布了sun classic vm虚拟机
  • 2.是世界上第一款商用java虚拟机
  • 3.jdk1.4被完全淘汰
  • 4.内部只提供解释器
  • 5.如果使用JIT编译器,则需要进行外挂。一旦使用了JIT编译器,JIT会接管虚拟机的执行系统。解释器就不再工作。解释器和编译器不能配合工作
  • 6.现在hotspot内置了此虚拟机

二、Exact VM

  • 1.为了解决Sun Classic VM的问题,jdk1.2时,sun提供了此虚拟机
  • 2.exact memory management:准确式内存管理
  • 3.也叫Non-Conservative/Accurate Memory Management
  • 4.虚拟机可以知道内存中某个位置的数据具体是什么类型
  • 5.具备现代高性能虚拟机的雏形
  • 6.热点探测
  • 7.编译器与解释器混合工作模式
  • 8.只在solaris平台短暂使用,其他平台上还是classic vm
  • 9.最终被hotspot虚拟机替代

三、HotSpot VM

  • 1.最初由一家名为“Longview Technologies”的小公司设计
  • 2.1997年被sun收购,2009年,sun被甲骨文收购
  • 3.jdk1.3时,hotspot vm成为默认虚拟机
  • 4.目前hotspot占有绝对的市场地位
  • 5.广泛使用的jdk6和使用比例较多的jdk8,默认的虚拟机都是hotspot
  • 6.sun/oracle jdk和open jdk的默认虚拟机
  • 7.从服务器、桌面到移动端、嵌入式都有应用
  • 8.hotspot的意思就是它的热点探测技术
  • 9.通过计数器找到最具编译价值代码,触发即时编译或栈上替换(对象不一定都需要创建在堆空间中,也可以在栈上分配对象)
  • 10.通过编译器和解释器协同工作,在最优化的程序响应时间与最佳执行性能中取得平衡

四、JRockit

  • 1.EA公司的产品,专注于服务器端应用
  • 2.服务器端可以不关注程序启动速度,JRockit内部不包含解释器实现,全部代码都靠及时编译器编译后执行
  • 3.大量的行业基准测试显示,JRockit JVM是世界上最快的JVM
  • 4.使用JRockit产品,客户已经体验到了显著的性能提高(一些超过了70%)和硬件成本的减少(达50%)
  • 5.优势:全面的java运行时解决方案组合,JRockit面向延迟敏感型应用的解决方案JRockit Real Time提供以毫秒或微妙级的JVM响应时间,适合财务、军事指挥、电信网络的需要;MissionControl服务套件,是一组以极低的开销来监控、管理和分析生产环境中的应用程序的工具
  • 6.2008年,BEA被Oracle收购
  • 7.Oracle表达了整合两大优秀虚拟机的工作,大致在jdk8中完成。整合的方式是在hotspot的基础上,移植JRockit的优秀特性
  • 8.高斯林:目前就职于谷歌,研究人工智能和水下机器人

五、J9

  • 1.全称:IBM Technology for Java Virtual Machine,简称IT4J,内部代号:J9
  • 2.市场定位与Hotspot接近,服务器端、桌面应用、嵌入式等多用途VM
  • 3.广泛用于IBM的各种java产品
  • 4.目前是最有影响力的三大商用虚拟机之一,也号称是世界上最快的java虚拟机
  • 5.2017年左右,IBM发布了开源J9 VM,命名为OpenJ9,交给Eclipse基金会管理,也称为Eclipse OpenJ9

六、KVM、CDC、CLDC

  • 1.oracle在java me产品上的两款虚拟机为:CDC/CLDC HotSpot Implementation VM
  • 2.KVM(Kilobyte)是CLDC-HI早期产品
  • 3.目前移动领域低位尴尬,手机被Android和ios瓜分
  • 4.KVM简单、轻量、高度可移植性,面向更低端的设备上还有一定的市场,智能控制器、传感器、老人机、经济欠发达地区的功能手机
  • 5.所有虚拟机的原则:一次编译,到处运行

七、Azul VM

  • 1.Azul VM和BEA Liquid VM是与特定硬件平台绑定、软硬件配合的专有虚拟机
  • 2.Azul VM是Azul System公司在HotSpot基础上进行大量改进,运行于Azul System公司的专有硬件Vega系统上的java虚拟机
  • 3.每个Azul VM实例都可以管理至少数十个CPU和数百GB内存的硬件资源,并提供在巨大内存范围内实现可控的GC时间的垃圾收集器、专有硬件优化的线程调度等优秀特性
  • 4.2010年,Azul System公司开始从硬件转向软件,发布了自己的Zing JVM,可以在通用x86平台上提供接近于Vega系统的特性

八、Liquid VM

  • 1.高性能java虚拟机中的战斗机
  • 2.BEA公司开发的,直接运行在自家Hypervisor系统上
  • 3.Liquid VM即是现在的JRockit VE(Virtual Edition),Liquid VM不需要操作系统的支持,或者说它本身实现了一个专用操作系统的必要功能,如线程调度、文件系统、网络支持等
  • 4.随着JRockit虚拟机终止开发,Liquid VM项目也停止

九、Apache Harmony

  • 1.Apache也曾经推出过与JDK1.5和JDK1.6兼容的java运行平台Apache Harmony
  • 2.它是IBM和Intel联合开发的开源JVM,受到同样开源的OpenJDK的压制,Sun坚决不让Harmony获得JCP认证,最终于2011年退役,IBM转而参与OpenJDK
  • 3.虽然目前并没有Apache Harmony被大规模商用的案例,但它的Java类库代码吸纳进了Android SDK

十、Microsoft JVM

  • 1.微软为了在IE3浏览器中支持Java Applets,开发了Microsoft JVM
  • 2.只能在window平台下运行。的确是当时Windows下性能最好的java vm
  • 3.1997年,sun以侵犯商标、不正当竞争罪名指控微软成功,赔了sun公司很多钱。微软在windowsXP SP3中抹掉了VM。现在windows上安装的jdk都是HotSpot

十一、Taobao JVM

  • 1.由AliJVM团队发布。阿里是国内使用java最强大的公司,覆盖云计算、金融、物流、电商等众多领域,需要解决高并发、高可用、分布式的复合问题。有大量的开源产品。
  • 2.基于OpenJDK开发了自己的定制版本AlibabaJDK,简称AJDK,是整个阿里Java体系的基石
  • 3.基于OpenJDK HotSpot VM发布的国内第一个优化、深度定制且开源的高性能服务器版Java虚拟机
  • 4.创新的GCIH(GC invisible heap)技术实现了off-heap,即将生命周期较长的java对象从heap中移到heap之外,并且GC不能管理GCIH内部的java对象,以此达到降低GC的回收频率和提升GC的回收效率的目的
  • 5.GCIH中的对象还能够在多个Java虚拟机进程中实现共享
  • 6.使用crc32指令实现JVM intrinsic降低JNI的调用开销
  • 7.PMU hardware的java profiling tool和诊断协助功能
  • 8.针对大数据场景的ZenGC
  • 9.taobao vm应用在阿里产品上性能高,硬件严重依赖intel的cpu,损失了兼容性,但提高了性能
  • 10.目前已经在淘宝、天猫上线,把Oracle官方的JVM版本全部替换了

十二、Dalvik VM

  • 1.骨骼开发的,应用于Android系统,并在Android2.2中提供了JIT,发展迅猛
  • 2.Dalvik VM只能称作虚拟机,而不能称作java虚拟机,没有遵循java虚拟机规范
  • 3.不能直接执行java的class文件
  • 4.基于寄存器架构,不是jvm的栈架构
  • 5.执行的是编译以后的dex(Dalvik Executable)文件。执行效率比较高
  • 6.执行的dex(Dalvik Executable)文件可以通过class文件转化文件,使用java语言编写应用程序,可以直接使用大部分的java api等
  • 7.Android 5.0使用支持提前编译(Ahead Of Time Compilation, AOT)的ART VM替换Dalvik VM

相关文章:

【jvm】jvm发展历程

目录 一、Sun Classic VM二、Exact VM三、HotSpot VM四、JRockit五、J9六、KVM、CDC、CLDC七、Azul VM八、Liquid VM九、Apache Harmony十、Microsoft JVM十一、Taobao JVM十二、Dalvik VM 一、Sun Classic VM 1.1996年java1.0版本,sun公司发布了sun classic vm虚拟…...

Dubbo3.0 Demo

将SpringBoot工程集成Dubbo 1.创建父工程 2.创建子工程consumer&#xff0c;provider 3.初始化工程 4.引入依赖 在provider和consumer中引入dubbo依赖 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</a…...

源码分析——ConcurrentHashMap源码+底层数据结构分析

文章目录 1. ConcurrentHashMap 1.71. 存储结构2. 初始化3. put4. 扩容 rehash5. get 2. ConcurrentHashMap 1.81. 存储结构2. 初始化 initTable3. put4. get 3. 总结 1. ConcurrentHashMap 1.7 1. 存储结构 Java 7 中 ConcurrentHashMap 的存储结构如上图&#xff0c;Concurr…...

R语言中的函数25:paste,paste0

文章目录 介绍paste0()实例 paste()实例 介绍 paste0()和paste()函数都可以实现对字符串的连接&#xff0c;paste0是paste的简化版。 paste0() paste (..., sep " ", collapse NULL, recycle0 FALSE)… one or more R objects, to be converted to character …...

(八)穿越多媒体奇境:探索Streamlit的图像、音频与视频魔法

文章目录 1 前言2 st.image&#xff1a;嵌入图像内容2.1 图像展示与描述2.2 调整图像尺寸2.3 使用本地文件或URL 3 st.audio&#xff1a;嵌入音频内容3.1 播放音频文件3.2 生成音频数据播放 4 st.video&#xff1a;嵌入视频内容4.1 播放视频文件4.2 嵌入在线视频 5 结语&#x…...

CAD练习——绘制房子平面图

首先还是需要设置图层、标注、文字等 XL&#xff1a;构造线 用构造线勾勒大致的轮廓&#xff1a; 使用多线命令&#xff1a;ML 绘制墙壁 可以看到有很多交叉点的位置 用多线编辑工具将交叉点处理 有一部分处理不了的&#xff0c;先讲多线分解&#xff0c;然后用修剪打理&…...

spring 面试题

一、Spring面试题 专题部分 1.1、什么是spring? Spring是一个轻量级Java开发框架&#xff0c;最早有Rod Johnson创建&#xff0c;目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack&#xff08;一站式&#xff09;轻量…...

Springboot项目集成Durid数据源和P6Spy以及dbType not support问题

项目开发阶段&#xff0c;mybatis的SQL打印有占位符&#xff0c;调试起来还是有点麻烦&#xff0c;随想整合P6Spy打印可以直接执行的SQL&#xff0c;方便调试&#xff0c;用的Durid连接池。 Springboot项目集成Durid <dependency><groupId>com.alibaba</group…...

安卓如何卸载应用

卸载系统应用 首先需要打开手机的开发者选项&#xff0c;启动usb调试。 第二步需要在电脑上安装adb命令&#xff0c;喜欢的话还可以将它加入系统path。如果不知道怎么安装&#xff0c;可以从这里下载免安装版本。 第三步将手机与电脑用数据线连接&#xff0c;注意是数据线&a…...

【云原生|Kubernetes】14-DaemonSet资源控制器详解

【云原生|Kubernetes】14-DaemonSet资源控制器详解 文章目录 【云原生|Kubernetes】14-DaemonSet资源控制器详解简介典型用法DaemonSet语法规则Pod模板Pod 选择算符在选定的节点上运行 Pod DaemonSet的 Pods 是如何被调度的污点和容忍度DaemonSet更新和回滚DaemonSet更新策略执…...

基于 Guava Retry 在Spring封装一个重试功能

pom依赖 <dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>2.0.0</version> </dependency> <dependency><groupId>org.springframework.boot</groupId>…...

适用HarmonyOS 3.1版本及以上的应用及服务开发工具 DevEco Studio 3.1.1 Release 安装

文章目录 安装步骤1.下载安装包2.安装成功后&#xff0c;初次运行studio2.1 配置node与ohpm的环境2.2安装sdk2.3等待安装结束 3.创建项目3.1 点击Create Project3.2 选择一个空项目3.3 项目配置3.4 Finish、等待依赖下载完毕3.5 项目创建完成 tip 提示4.配置运行环境4.1 真机运…...

[信号与系统系列] 正弦振幅调制之差拍信号

当将具有不同频率的两个正弦曲线相乘时&#xff0c;可以创建一个有趣的音频效果&#xff0c;称为差拍音符。这种现象听起来像颤音&#xff0c;最好通过选择一个频率非常小的信号与和另一个频率大约1KHz的信号&#xff0c;把二者混合从而听到。一些乐器能够自然产生差拍音符。使…...

vb+SQL航空公司管理系统设计与实现

航空公司管理信息系统 一个正常营运的航空公司需要管理所拥有的飞机、航线的设置、客户的信息等,更重要的还要提供票务管理。面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效的程序结构支持各种数据操作的执行。 本设计讲述如何建立一个航空公司管理信…...

python爬取网页视频

Python是一种功能强大的编程语言&#xff0c;被广泛应用于网络爬虫、数据分析和人工智能等领域。在网络爬虫中&#xff0c;常常需要从网页中获取视频或者录制网页视频。下面将介绍如何使用Python来录制网页视频。 import time from selenium import webdriver # 创建驱动程序 d…...

数据挖掘具体步骤

数据挖掘具体步骤 1、理解业务与数据 2、准备数据 数据清洗&#xff1a; 缺失值处理&#xff1a; 异常值: 数据标准化&#xff1a; 特征选择&#xff1a; 数据采样处理&#xff1a; 3、数据建模 分类问题&#xff1a; 聚类问题&#xff1a; 回归问题 关联分析 集成学习 image B…...

react class与hooks区别

在React中&#xff0c;有两种主要的方式来管理组件的状态和生命周期&#xff1a;Class 组件和 Hooks。 Class 组件&#xff1a; Class 组件是 React 最早引入的方式&#xff0c;它是基于 ES6 class 的语法来创建的。Class 组件包含了生命周期方法&#xff0c;可以用来处理组件…...

Python爬虫思维:异常处理与日志记录

作为一名专业的爬虫代理供应商&#xff0c;我们经常会看见各种各样的爬虫异常情况。网络请求超时、页面结构变化、反爬虫机制拦截等问题时常出现在客户的工作中。 在这篇文章中&#xff0c;我将和大家分享一些关于异常处理与日志记录的思维方法。通过合理的异常处理和有效的日志…...

(十六)大数据实战——安装使用mysql版的hive服务

前言 hive默认使用的是内嵌据库derby&#xff0c;Derby 是一个嵌入式数据库&#xff0c;可以轻松地以库的形式集成到应用程序中。它不需要独立的服务器进程&#xff0c;所有的数据存储在应用程序所在的文件系统中。为了支持hive服务更方便的使用&#xff0c;我们使用mysql数据…...

【信号生成器】从 Excel 数据文件创建 Simulink 信号生成器块研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

蓝牙HC-05调试避坑指南:从AT指令到手机控制LED的完整流程

HC-05蓝牙模块实战指南&#xff1a;从AT指令解析到手机控制LED全流程 当你第一次拿到HC-05蓝牙模块时&#xff0c;是否被那些神秘的AT指令和复杂的配置过程困扰&#xff1f;本文将带你深入HC-05的核心功能&#xff0c;避开那些新手常踩的"坑"&#xff0c;实现从基础配…...

数据摄取构建模块简介(预览版)(一)刺

一、语言特性&#xff1a;Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一&#xff0c;就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...

为什么选择chrony而不是ntpd?Rocky Linux时间同步服务深度对比

为什么选择chrony而不是ntpd&#xff1f;Rocky Linux时间同步服务深度对比 在现代IT基础设施中&#xff0c;精确的时间同步是确保系统可靠性和安全性的基石。从分布式数据库的事务一致性到安全证书的有效期验证&#xff0c;毫秒级的时间偏差都可能导致严重的业务中断。Rocky L…...

ESXI系统安装全流程解析:从U盘启动到网络配置

1. 制作ESXI启动U盘&#xff1a;从镜像下载到写入完成 准备一个容量至少8GB的U盘&#xff0c;建议使用USB3.0接口的高速U盘。我实测过多个品牌&#xff0c;闪迪CZ73和金士顿DTSE9在兼容性和速度上表现最好。制作启动盘前记得备份U盘数据&#xff0c;整个过程会清空所有内容。 首…...

【世纪龙科技】3D仿真还原真车,拆装检测步步有方

新能源汽车动力总成拆装与检测虚拟实训软件—— 虚实相融&#xff0c;赋能未来工匠的成长新范式在新能源汽车产业蓬勃发展的今天&#xff0c;职业院校作为技术技能人才的摇篮&#xff0c;正面临着“高压安全难保障、精密部件难拆装、大班教学难兼顾”的实训新挑战。如何让学生在…...

深度学习项目训练环境低资源优化:支持梯度检查点+混合精度,RTX 3090显存省35%

深度学习项目训练环境低资源优化&#xff1a;支持梯度检查点混合精度&#xff0c;RTX 3090显存省35% 1. 环境准备与快速上手 1.1 开箱即用的深度学习环境 这个深度学习训练镜像已经预装了完整的开发环境&#xff0c;基于PyTorch 1.13.0和CUDA 11.6构建&#xff0c;包含了训练…...

C#怎么实现RSA非对称加密 C#如何用RSA算法进行公钥加密私钥解密和数字签名【安全】

应使用 RSA.Create() 创建 RSA 实例&#xff0c;避免过时的 RSACryptoServiceProvider&#xff1b;密钥导出用 ExportPkcs8PrivateKey/ExportSubjectPublicKeyInfo&#xff1b;加密须用 OAEP-SHA256 且校验明文长度&#xff1b;签名用 SignData/VerifyData 并指定 SHA256 和 PK…...

深度解析 Chromium WebUI 的生命周期与 IsJavascriptAllowed 崩溃之谜

在 Chromium (或基于其二次开发的浏览器等内核) 开发中&#xff0c;WebUI 是我们最常打交道的模块之一。诸如 chrome://settings、chrome://history 这些内置页面&#xff0c;都是通过 WebUI 机制实现前端 (HTML/JS) 与底层 C 的双向通信。然而&#xff0c;在处理后台异步任务向…...

推荐一些可以用于论文降重的爆款软件:2026年实测TOP5,AIGC率稳降至5%以下!

CSDN资深技术博主课代表总结&#xff1a; 2026年的毕业季&#xff0c;无数硕博生因为“AIGC疑似率过高”被卡在了送审的最后一关。很多同学后台私信让我“推荐一些可以用于论文降重的软件”。经过耗时半个月的对比交叉测试&#xff0c;我明确告诉大家&#xff1a;那些只会“同义…...

Palantir:两个不确定的问题(2)FDE会被AI完全替代吗?

从上一篇的分析可以得知&#xff0c;Palantir的整套系统&#xff0c;就是一个有机的企业级数字孪生体&#xff1a; 本体Ontology灵魂/主宰 它定义世界“是什么、有什么、彼此关系如何”&#xff0c;是客观现实与人类主观认识的统一&#xff0c;是整个系统的 “道”。 AIP心与…...