科普文:TaobaoVM信息收集

网上关于TaobaoVM的信息很少,只有一个简介,就没有其他信息。毕竟这是别人企业自己的jvm,不可能公开。

Taobao VM

由AliJVM团队发布。阿里,国内使用Java最强大的公司,覆盖云计算、金融、物流、电商等众多领域,需要解决高并发、高可用、分布式的复合问题。有大量的开源产品。

基于openJDK开发了自己的定制版本AlibabaJDK,简称AJDK。是整个阿里Java体系的基石。

基于openJDK Hotspot VM发布的国内第一个优化、深度定制且开源的高性能服务器版Java虚拟机。

TaobaoVM:实际上是 Hotspot 的定制版,专门为淘宝(阿里、天猫)准备的。

hotspot深度定制版,除了在性能优化方面下足了功夫,TaobaoVM还在HotSpot的基础之上大幅度扩充了一些特定的增强实现。

据说淘宝里面大概有十个人能够手写TaobaoVM,都是P9 P10级别的

  • 创新的GCIH(GCinvisible heap)技术实现了off-heap,即将生命周期较长的Java对象从heap中移到heap之外,并且Gc不能管理GCIH内部的Java对象,以此达到降低GC的回收频率和提升Gc的回收效率的目的。这样做最大的好处就是降低了GC的回收平率以及提升了GC的回收效率,并且GCIH中的对象还能够在多个Java虚拟机进程中实现共享。其他扩充技术还有利用PMU hardware的Java profiling tool和诊断协助功能等。
  • GCIH中的对象还能够在多个Java虚拟机进程中实现共享
  • 使用crc32指令实现JvM intrinsic降低JNI的调用开销
  • PMU hardware的Java profiling tool和诊断协助功能
  • 针对大数据场景的ZenGc
  • 对硬件的依赖性够,牺牲了兼容性。

taobao vm应用在阿里产品上性能高,硬件严重依赖inte1的cpu,损失了兼容性,但提高了性能。

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

我最近也在看《深入理解java虚拟机》这本书,书中提到淘宝JVM,基于OpenJDK深度定制的淘宝JVM(TaobaoVM)。

下面是网络上针对TaobaoVM的一段介绍:

由于淘宝目前无疑是中国最大的Java技术应用方,那么淘宝究竟是采用什么样的技术对Java虚拟机进行优化的呢?淘宝的技术团队对Java虚拟机的优化工作其实早已不是停留在简单的参数调制上面,而是充分结合了企业自身的业务特点以及实际的应用场景,在OpenJDK的基础之上通过修改大量的HotSpot源代码,深度定制了淘宝专属的高性能Java虚拟机——TaobaoVM。

既然是结合业务特点深度定制的一款Java虚拟机,那么性能必然在某一些特定的应用场景上会比Oracle官方的HotSpot更强,如图1-8所示。但其弊端同样也非常明显,那就是无法实现通用。所以如果只是想对TaobaoVM进行研究的话,可以参考http://jvm.taobao.org中的描述编译一个TaobaoVM,但如果需要应用在实际的项目中,笔者还是建议三思而后行,否则将会得不偿失。

淘宝的技术团队通过修改大量的HotSpot源代码深度定制的TaobaoVM[ 文章完整地址:http://os.51cto.com/exp/velocity2012/ppt/wangcheng.pdf。],其实从严格意义上来说,在提升Java虚拟机性能的同时,却严重依赖物理CPU类型。也就是说,部署有TaobaoVM的服务器中,CPU全都是清一色的Intel CPU,且编译手段采用的是Intel C/CPP Compiler进行编译,以此对GC性能进行提升。除了优化编译效果外,TaobaoVM还使用了crc32指令实现JVM intrinsic降低JNI的调用开销,如图1-9所示。

除了在性能优化方面下足了功夫,TaobaoVM还在HotSpot的基础之上大幅度扩充了一些特定的增强实现。比如创新的GCIH(GC invisible heap)技术实现off-heap,这样一来就可以将生命周期较长的Java对象从heap中移至heap之外,并且GC不能管理GCIH内部的Java对象,这样做最大的好处就是降低了GC的回收平率以及提升了GC的回收效率,并且GCIH中的对象还能够在多个Java虚拟机进程中实现共享。其他扩充技术还有利用PMU hardware的Java profiling tool和诊断协助功能等。


 

有幸可以回答一下。阿里的AJVM。首先,Java 这门语言,在做http server(主要以Tomcat、Jetty为主导)的时候,会有以下差强人意(感谢@大黄蜂提醒,这个词可能用得不太好)的地方,所以阿里希望(特指2015年之前)以后的JVM有以下特点

  • session-based gc 大致就是讲理论上每个http事务,或者说是一个session结束之后做到高效的垃圾回收。这一点open jdk中的做得不太好
  • 多租户共享内存 一个JVM可以同时运行部署多个服务,让原本可能是网络调用的服务调用变成函数调用
  • 全自动的异步化主要针对原生线程池在高并发的情况下表现没有异步处理机制性能好。为了让性能在做得更好,代码的可维护性更高。
  • ZDebugger 用来本地远程观察线上的代码执行情况
  • Profiling Support 直观分析CPU,内存,IO之类的消耗
  • JIT WARM-UP减少重启服务的delay,同时能够记录上次跑的服务之前的结果,提前做优化。这个有早期找微软请求帮助。
  • 反序列化优化

总体而言就是,按照自己公司的业务痛点,主要是高并发,服务复杂,做定向的优化。对于很多业务体量没有达到这个层次的而言,可能有问题也不会被放大。

祝贺阿里加入Java 全球管理组织Java Community Process (JCP) 的最高执行委员会。

其他jvm

HotSpot VM

HotSpot历史最初由一家名为“Longview Technologies”的小公司设计。1997年,此公司被sun收购;2009年,Sun公司被甲骨文收购。
在JDK1.3版本时,HotSpot VM就成为默认虚拟机。

目前Hotspot占有绝对的市场地位,是绝对的主流

  • 不管是现在仍在广泛使用的JDK6,还是使用比例较多的JDK8中,默认的虚拟机都是HotSpot。
  • Sun/Oracle JDK和openJDK的默认虚拟机。
  • 从服务器、桌面到移动端、嵌入式都有应用。

HotSpot指的就是它的热点代码探测技术

  • 通过计数器找到最具编译价值代码,触发即时编译或栈上替换。
  • 通过编译器与解释器协同工作,在最优化的程序响应时间与最佳执行性能中取得平衡

JRockit

JRockit专注于服务器端应用。

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

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

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

优势:全面的Java运行时解决方案组合。

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

2008年,JRockit被Oracle收购。

Oracle表达了整合两大优秀虚拟机的工作,大致在JDK8中完成。整合的方式是在HotSpot的基础上,移植JRockit的优秀特性

IBM的J9

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

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

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

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

Azul VM

前面三大“高性能Java虚拟机”使用在通用硬件平台上这里Azu1VW和BEALiquid VM是与特定硬件平台绑定、软硬件配合的专有虚拟机I

  • 高性能Java虚拟机中的战斗机。

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

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

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

Dalvik VM

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

Dalvik y只能称作虚拟机,而不能称作“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公开了GraalvM,号称 "Run Programs Faster Anywhere",勃勃野心。与1995年java的”write once,run anywhere"遥相呼应。

GraalVM在HotSpot VM基础上增强而成的跨语言全栈虚拟机,可以作为“任何语言”
的运行平台使用。语言包括:Java、Scala、Groovy、Kotlin;C、C++、Javascript、Ruby、Python、R等

支持不同语言中混用对方的接口和对象,支持这些语言使用已经编写好的本地库文件

工作原理是将这些语言的源代码或源代码编译后的中间格式,通过解释器转换为能被Graal VM接受的中间表示。Graal VM提供Truffle工具集快速构建面向一种新语言的解释器。在运行时还能进行即时编译优化,获得比原生编译器更优秀的执行效率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zabbix“专家坐诊”第246期问答

问题一 Q:有哪位大哥知道这是啥情况,6.4主动检查接口显示未知? A:看看agent配置文件的主采集有没有填写正确IP。 Q:我刚刚客户端重新授权,发现可以预警了,但是还是灰色的,我尝试输…

spring事件发布器ApplicationEventPublisher的使用

1、前言 spring中有一个事件发布器,使用了观察者模式,当有事件发布的时候,事件监听者会立刻收到发布的事件。今天我们来介绍下这个事件发布器怎么使用。 2、简单使用 2.1、创建事件实体类 事件实体类需要继承ApplicationEvent。我们模拟老师发布事件的诉求。 public class T…

【C++】C++ 学生信息管理系统(源码+面向对象)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

一文-深入了解Ansible常见模块、安装和部署

1 Ansible 介绍 Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于python 开发的(集合了众多运维工具 puppet、cfengine、chef、func、fabric的优点)自动化运维工具, 其功能实现基于ss…

鸿蒙仓颉语言【类型class】

类与结构&#xff08;class & struct&#xff09; 面向对象的编程语言&#xff0c;必不可少的基础元素&#xff0c;类或者叫类型&#xff0c;在仓颉中类可以抽象(abstract)、继承&#xff08;<:&#xff09;&#xff0c;公开&#xff08;Public&#xff09;或者私有&am…

算法第十天:leetcode203.移除链表元素

一、203.移除链表元素题目描述 203.移除链表元素的链接如下所示&#xff0c;您可复制下面链接网址进入力扣学习&#xff0c;看题解之前一定要先做一遍哦&#xff01; https://leetcode.cn/problems/remove-linked-list-elements/description/https://leetcode.cn/problems/rem…

26_EfficientNet网络详解

1.1简介 EfficientNet是由Google Research团队开发的一种高效卷积神经网络&#xff08;CNN&#xff09;模型&#xff0c;首次在2019年的论文《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》中提出。此模型设计的核心在于平衡网络的深度、宽度以…

如何规划数据科学和机器学习领域的下一步职业发展

。 欢迎来到云闪世界。数据科学和机器学习专业人士面临着来自多个方面的不确定性 欢迎来到云闪世界。全球经济、人工智能工具及其对工作保障的影响&#xff0c;以及不断变化的技术堆栈&#xff0c;仅举几例。如今&#xff0c;谈论职业生涯是否能够抵御经济衰退…

MySQL 进阶(三)【SQL 优化】

1、SQL 优化 1.1、插入数据优化 1.1.1、Insert 优化 1、批量插入 插入多条数据时&#xff0c;不建议使用单条的插入语句&#xff0c;而是下面的批量插入&#xff1a; INSERT INTO tb_name VALUES (),(),(),...; 批量插入建议一次批量 500~100 条&#xff0c;如果数据量比…

GNN学习笔记

1.拉普拉斯矩阵 D是度矩阵&#xff0c;A是邻接矩阵 L的第二个公式常用 L的特征值>0 2.图的整体&#xff0c;节点&#xff0c;边都能代表一个分类/回归问题。 3.GNN的感受野 N-Hop Neighbors&#xff0c;某一点的n阶邻居。n步以内能到达的点。 4.残差连接 最后对图结果的处…

RK3568笔记三十六:LED驱动开发(设备树)

若该文为原创文章&#xff0c;转载请注明原文出处。 记录使用设备树编写一个简单的 LED 灯驱动程序 一、编程思路 程序编写的主要内容为添加 LED 灯的设备树节点、在驱动程序中使用 of 函数获取设备节点中的 属性&#xff0c;编写测试应用程序。 • 首先向设备树添加 LED 设备…

SCSA第八天

防火墙的带宽管理 核心思想 1&#xff0c;带宽限制 --- 限制非关键业务流量占用带宽的比例 2&#xff0c;带宽保证 --- 这里需要保证的是我们关键业务流量&#xff1b;再业务繁忙时&#xff0c;确保关键业务不受影 响&#xff1b; 3&#xff0c;连接数的限制 --- 这也…

如何生成好看的zabbix告警报表并发送邮件

作者 乐维社区&#xff08;forum.lwops.cn&#xff09; 许远 一、场景模拟 小东是一名资深的IT运维人员&#xff0c;其直属领导想要了解公司业务系统的健康状态以及小东日常的工作情况等&#xff0c;要求小东每周统计系统告警情况并发邮件给到他。小东所在公司搭建了一套zabbix…

为什么品牌需要做 IP 形象?

品牌做IP形象的原因有多方面&#xff0c;这些原因共同构成了IP形象在品牌建设中的重要性和价值&#xff0c;主要原因有以下几个方面&#xff1a; 增强品牌识别度与记忆点&#xff1a; IP形象作为品牌的视觉符号&#xff0c;具有独特性和辨识性&#xff0c;能够在消费者心中留…

Linux--网络基础

计算机网络背景 计算机网络背景是一个复杂而丰富的领域&#xff0c;涵盖了从计算机单机模式到网络互联的演变过程&#xff0c;以及网络技术的不断发展和创新。 计算机单机模式和独立发展 在早期&#xff0c;计算机主要以单机模式存在&#xff0c;即每台计算机都是独立的&…

SAC-IA粗配准算法记录

1. 算法思路 SAC-IA(Sample Consensus Initial Aligment,SAC-IA)粗配准算法是一种基于局部特征描述子的点云粗配准算法,其需要计算点云的快速点特征直方图(FPFH)来保持对应点对之间的相似关系,根据相似关系来搜索点云中的对应点。其基本原理是采用采样一致性的思想,通过查…

P2712 摄像头

好久没发帖了&#xff0c;放假了来水一波。 代码&#xff1a; #include<iostream> #include<cstring> #include<algorithm> using namespace std;const int N 200010, mod 80112002;int n, m; int nn; int e[N], h[N], ne[N], idx; int q[N], in[N], chu[N…

宝塔安装RabbitMq教程

需要放开15672端口&#xff0c;默认账号密码为guest/guest

前端开发日记——在MacBook上配置Vue环境

前言 大家好&#xff0c;我是来自CSDN的寄术区博主PleaSure乐事。今天是开始学习vue的第一天&#xff0c;我使用的编译器是vscode&#xff0c;浏览器使用的是谷歌浏览器&#xff0c;后续会下载webstorm进行使用&#xff0c;当前学习阶段使用vscode也是可以的&#xff0c;不用担…

Jupyter Notebook安装及基本使用

Jupyter Notebook安装及基本使用 目录 Jupyter Notebook安装及基本使用方式一&#xff1a;Anaconda直接安装方式二&#xff1a;pip命令安装Jupyter使用虚拟环境 方式一&#xff1a;Anaconda直接安装 安装Anaconda 下载地址&#xff0c;输入邮箱&#xff0c;Windows下载 开始安…