当前位置: 首页 > 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…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...