Java虚拟机的历程(jvm01)
Java虚拟机的历程(jvm01)
Java虚拟机(JVM)作为Java语言的核心技术之一,自诞生以来经历了多次迭代与演变。不同的虚拟机在性能、功能以及适用场景上各有侧重。本文将介绍Java虚拟机发展历程中的一些重要虚拟机,涵盖经典虚拟机(Classic VM、Exact VM)、影响力最大的虚拟机(HotSpot、JRockit、J9)、移动端虚拟机(KVM)、性能最高的虚拟机(Azul、Liquid VM)、以及其他一些特色虚拟机(Apache Harmony、Microsoft VM、TaoBao VM、Dalvik VM、Graal VM)。
1. 经典虚拟机:Classic VM 和 Exact VM
1.1 Classic VM
Classic VM 是早期Java虚拟机的代表之一,由Sun Microsystems开发。它是最早的JVM实现,提供了Java的基础执行环境。然而,由于Classic VM缺乏现代JVM的很多优化技术(如即时编译和内存管理优化),它逐渐被更先进的虚拟机所取代。
1.2 Exact VM
Exact VM 是Classic VM的改进版本,它引入了更精细的垃圾收集机制和内存管理策略。Exact VM的设计目的是实现“精确的”垃圾收集,即虚拟机能够精确地知道内存中对象的类型和引用关系,从而提高垃圾收集的效率。这种机制为后续的虚拟机(如HotSpot)的发展奠定了基础。
2. 影响力最大的三个虚拟机:HotSpot、JRockit、J9
2.1 HotSpot
HotSpot 是目前使用最广泛的Java虚拟机,由Sun Microsystems开发,现在由Oracle维护。它以其强大的性能优化技术而闻名,尤其是即时编译器(JIT Compiler)和垃圾收集器(GC)的多种策略,如G1、CMS和ZGC。HotSpot的设计目标是为各种应用场景(从服务器到桌面应用)提供高效、稳定的执行环境。
2.2 JRockit
JRockit 是Oracle从BEA Systems收购的一款JVM,它在低延迟和高性能方面表现突出。JRockit专注于服务器环境,并且其JIT编译和垃圾收集技术在多线程环境中表现优异。然而,在Oracle收购BEA并将JRockit的技术与HotSpot合并后,JRockit作为一个独立的虚拟机逐渐被HotSpot取代。
2.3 J9
J9 由IBM开发,现在被称为OpenJ9。J9是一款企业级JVM,特别适合在大型企业应用和多线程环境下使用。J9具有模块化和可扩展的架构,支持多种平台,并且在内存管理和性能调优上有独到之处。OpenJ9在开源后,成为Java社区中一个重要的虚拟机选择,与HotSpot形成了良性竞争。
3. 移动端虚拟机:KVM(CDC/CLDC)
KVM(Kilobyte Virtual Machine)是专门为嵌入式和移动设备设计的轻量级Java虚拟机。它有两个版本:CDC(Connected Device Configuration)和CLDC(Connected Limited Device Configuration),分别用于资源较丰富的嵌入式设备和资源极其有限的移动设备。KVM的设计目标是占用尽可能少的资源,从而使Java能够运行在低功耗设备上。
4. 性能最高的两个虚拟机:Azul 和 Liquid VM
4.1 Azul VM
Azul VM 是由Azul Systems公司开发的,旨在为大型服务器和高性能计算提供极致的性能表现。Azul VM通过专用硬件和高度优化的垃圾收集机制(如暂停时间极短的C4垃圾收集器),实现了超低延迟和高吞吐量。它常用于金融行业、实时交易系统等需要高可靠性和低延迟的场景。
4.2 Liquid VM
Liquid VM 由BEA Systems开发,它的设计目标是将JVM直接运行在虚拟化环境中,而不依赖于操作系统。Liquid VM特别适合云计算和虚拟化平台,在这些环境下它能够显著提高性能和资源利用率。Liquid VM后来被Oracle收购并整合到其产品中。
5. 其他虚拟机
5.1 Apache Harmony
Apache Harmony 是一个开源的Java SE实现项目,旨在为Java社区提供一个完全开源的替代品。虽然它最终未能获得广泛的使用,但Harmony的部分代码和设计理念后来影响了其他JVM实现(如Android的Dalvik VM)。
5.2 Microsoft VM
Microsoft VM 是微软早期针对Java开发的虚拟机版本,曾被用于Windows平台。然而,由于与Sun Microsystems的法律纠纷,Microsoft VM被迫停止开发。之后,微软专注于其自己的平台技术,如.NET和C#。
5.3 TaoBao VM
TaoBao VM 是阿里巴巴团队为优化其电商平台而开发的定制JVM。它基于HotSpot,并对垃圾收集器和JIT编译器进行了特别的优化,以提高在电商交易高峰期的性能和稳定性。这种定制JVM显示了如何根据特定应用场景对Java虚拟机进行深度优化。
5.4 Dalvik VM
Dalvik VM 是Android平台上最早使用的Java虚拟机。与传统JVM不同,Dalvik采用寄存器而非栈为基础的架构,这使其在移动设备上有更好的性能表现。随着Android的发展,Dalvik VM被ART(Android Runtime)替代,但它仍然是Android系统早期架构的核心部分。
5.5 Graal VM
Graal VM 是Oracle推出的新一代多语言虚拟机,旨在支持Java、JavaScript、Ruby、Python等多种语言的运行。Graal VM的一个显著特点是其多语言互操作性和高效的即时编译技术。此外,Graal VM还支持原生镜像生成(native image),使得Java应用可以编译为独立的本地可执行文件,极大地提高了启动速度和性能。
结论
Java虚拟机在不断发展和优化中,不同的虚拟机在各自的领域中发挥了重要作用。从早期的Classic VM到现代的Graal VM,Java生态系统经历了技术的革新和优化。根据不同的应用场景和需求,选择合适的Java虚拟机版本,可以充分发挥Java语言的优势。
相关文章:
Java虚拟机的历程(jvm01)
Java虚拟机的历程(jvm01) Java虚拟机(JVM)作为Java语言的核心技术之一,自诞生以来经历了多次迭代与演变。不同的虚拟机在性能、功能以及适用场景上各有侧重。本文将介绍Java虚拟机发展历程中的一些重要虚拟机…...
[代码随想录Day4打卡] 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II 总结
24. 两两交换链表中的节点 题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 重点: 明确具体交换怎么做。交换其中1,2…...
java项目之校园周边美食探索及分享平台(springboot)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园周边美食探索及分享平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 校园周边美食…...
支持 Mermaid 语言预览,用通义灵码画流程图
想像看图片一样快速读复杂代码和架构?通义灵码上新功能:智能问答支持 Mermaid 语言的预览模式,即支持代码逻辑可视化,可以把每段代码画成流程图,像脑图工具一样画出代码逻辑和框架。 操作步骤:选中代码块&a…...
cangjie仓颉程序设计-数据结构(四)
文章目录 ArrayListLinkedListHashSetHashMapTreeMap 本专栏还在持续更新: Cangjie仓颉程序设计-个人总结 这是双子专栏: 仓颉编程cangjie刷题录 这些数据结构都在std.collection.*中。暂时官方包还没有stack, queue等数据结构。服了 import std.coll…...
Redis中储存含LocalDateTime属性对象的序列化实现
目录 1.问题1 向Redis中存入序列化对象 1.1引入 : 1.2解决方案: 1.2.1首先引入依赖 1.2.2然后在RedisConfig中进行配置 1.3 介绍下ObjectMapper 1.3.1 ObjectMapper 1.3.2 objectMapper.registerModule(new JavaTimeModule()); 1.3.3 GenericJackson2Js…...
蚁剑的介绍和使用
蚁剑介绍 蚁剑(AntSword)是一个开源的跨平台网站管理工具,主要用于渗透测试和安全研究。它提供了一个图形化界面,方便用户管理和操作被攻陷的网站。 安装教程: github官网:https://github.com/AntSwordPro…...
C++之多态的深度剖析(2)
前言 在前面内容中,我们对多态进行了基本的了解,对其中的虚函数进行着重的介绍,本节内容我们将进一步对多态的底层进行观察了解看看它是如何实现的。 多态如何实现 从底层的角度Func函数中ptr->BuyTicket(),是如何作为ptr指向P…...
一篇文章 介绍 shiro反序列化漏洞
shiro反序列化漏洞 Shiro-550反序列化漏洞(CVE-2016-4437) 漏洞简介 shiro-550主要是由shiro的RememberMe内容反序列化导致的命令执行漏洞,造成的原因是默认加密密钥是硬编码在shiro源码中,任何有权访问源代码的人都可以知道默认加…...
pyav保存视频
目录 imageio替代pyav imageio替代pyav import imageio import numpy as np import torch# 创建一个随机的图像张量,形状为 (N, C, H, W) # 这里 N 30(帧数),C 3(通道数),H 64(…...
.bixi勒索病毒来袭:如何防止文件加密与数据丢失?
导言 在网络威胁剧烈的今天,勒索病毒已成为企业和个人面临的重大安全挑战,其中虫洞勒索病毒习得高强度的加密手段和急剧传播的特性引起关注。一旦感染,就会加密关键数据并索要赎金,导致数据无法访问并带来巨大的财务损失。更为严…...
MySQL安装配置教程
以下是 MySQL 在 Windows 系统下的安装配置教程: 1. 下载 MySQL 访问 MySQL 官方网站(https://dev.mysql.com/downloads/mysql/),根据您的操作系统版本(32 位或 64 位)选择合适的 MySQL 安装包。一般建议下载社区版(Community Server),它是免费且功能丰富的版本。2. …...
Pandas进行数据查看与检查
在数据分析的工作流中,数据的初步查看与检查是非常重要的步骤。通过这一步,可以快速了解数据的结构、属性以及一些关键的统计信息,确保数据符合预期,或者发现数据中的潜在问题。 借助 pandas 库中的常用方法,如 DataFrame.head()、DataFrame.tail()、DataFrame.info() 和…...
MySQL中between and的基本用法、范围查询
文章目录 一、between and语法二、使用示例2.1、between and数值查询2.2、between and时间范围查询2.3、not between and示例 BETWEEN AND操作符可以用于数值、日期等类型的字段,包括边界值。 一、between and语法 MySQL中的BETWEEN AND操作符用于在两个值之间选择…...
[ 问题解决篇 ] 解决远程桌面安全登录框的问题
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...
ctfshow——web(总结持续更新)
文章目录 1、基础知识部分2、php伪协议2.1 php://input协议2.2 data://text/plain协议 3、webshell连接工具3.1 蚁剑连接一句话木马 4、各个web中间件重要文件路径4.1 Nginx 5、sqlmap使用6、php特性6.1 md5加密漏洞 7、TOP 10漏洞7.1 SQL注入 1、基础知识部分 识别base64编码…...
selinux介绍和Linux中的防火墙
selinux 1、selinux的说明 2、selinux的工作原理 3、selinux的启动、关闭与查看 防火墙 1、什么是防火墙 2、iptables (1)iptables介绍 参数说明 3、firewalld firewalld-cmd的参数说明...
Jenkins面试整理-如何配置 Jenkins Pipeline?
在 Jenkins 中配置 Pipeline 是将构建、测试、部署等流程自动化的重要方式。Pipeline 可以通过一个名为 Jenkinsfile 的文件配置,它允许你使用脚本定义流水线。下面是如何在 Jenkins 中配置 Pipeline 的详细步骤。 步骤 1: 准备 Jenkinsfile Jenkinsfile 是 Jenkins Pipeline …...
Java每日刷题之二分算法
34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode) 转化 通过题目时间复杂度为O(logN),我们就可以联想到二分算法,但是我们前面学到的算法,是查找出,有序数组里的值,并不是求其中的范围&a…...
【mod分享】极品飞车9仿虚幻引擎模组,支持光追,高清纹理材质,体验一会虚幻引擎风格的极品9
各位好,今天小编给大家带来一款新的高清重置MOD,本次高清重置的游戏叫《极品飞车9最高通缉》。 《极品飞车:最高通缉》作为一款2005年的游戏,《极品飞车:最高通缉》的画面效果还是可以的,效果全开之后很不…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...
内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...
