前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >笔记10 - DVM或ART是如何对JVM进行优化的

笔记10 - DVM或ART是如何对JVM进行优化的

作者头像
码农帮派
发布于 2021-01-12 06:56:57
发布于 2021-01-12 06:56:57
74100
代码可运行
举报
文章被收录于专栏:码农帮派码农帮派
运行总次数:0
代码可运行

DVM大多数实现和传统的JVM相似,但是为了满足Android在手机端内存的限制,Dalvik对JVM做了一些独有的优化。

Dex文件

传统的class文件是由Java源码文件编译生成的,而Android在编译打包的时候,会将所有的class文件整合优化,最终生成class.dex文件。dex文件中去掉了class文件中的冗余信息,使得编译打包之后的class.dex文件更加紧凑,这样在ClassLoader加载解析dex文件的时候减少了I/O操作,提高了类查找的速度。

下面我们新建两个java类文件,分别是Dex1.java和Dex2.java文件:

我们使用javac命令可以将java文件编译成class文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
javac Dex1.java
javac Dex2.java

使用jar命令将两个class文件打包成一个jar包:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jar cvf AllDex.jar Dex1.class Dex2.class

上面的命令将两个class文件打包成了一个AllDex.jar的包。

最后使用dx命令将jar包优化压缩成class.dex文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dx --dex --output AllDex.dex AllDex.jar

打包之后的dex包,可以使用Android SDK中的dexdump工具进行查看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dexdump -d -l plain AllDex.dex

需要注意的是,Android编译打包对class文件的压缩伴随着一个副作用,就是Android的65535的问题,这一问题最直接的原因就是DVM的源代码MemberIdsSection.java中:

此处规定了一个Dex文件中的方法、属性、类的个数不能超过MAX_MEMBER_IDX(65535),Android为了解决这一问题,提供了MultiDex来解决。

架构基于寄存器/基于栈结构

JVM的字节码指令的执行是基于栈进行的,而Android字节码指令的执行是基于寄存器的,这里的寄存器是在内存中模拟出的一组寄存器,而并非硬件的寄存器。Android和Java的字节码是完全不同的,Android的字节码是二地址或三地址的指令。

我们编写Dex.java文件:

java文件经过javac的编译打包之后的字节码:

使用dx对文件进行优化压缩之后的字节码文件:

Android字节码命令说明:

add-in指令需要三个寄存器参数,这个指令会将后面两个寄存器(v2、v3)相加,然后将结果寄存在第一个寄存器(v0)中;

return指令会将最终的结果返回。

可以看到在class字节码中需要4行的指令,经过Android优化压缩之后只有2行。基于寄存器的指令明显要比基于栈的指令少,虽然指令的长度增加,但是执行的速度得到了提高。

下面是基于栈和基于寄存器指令的对比:

内存管理和回收

DVM和JVM另外一个明显不同的地方就是内存结果的不同,主要体现在堆内存的划分和管理上。DVM中将堆内存分成了两部分:Active Heap和Zygote Heap。

为什么要区分Zygoto Heap和Active Heap

在Android系统中,底层init进程会创建一个Zygoto进程,Zygoto创建了Android中的DVM,其他的应用进程以及SystemService也都是由Zygote进程fork出来的。

Zygote进程在被创建之后,会完成虚拟机的初始化、lib库的加载、系统资源的配置等等,当系统需要创建一个新的应用进程的时候,Zygote通过复制快速fork出一个新的进程,对于一些只读的库和资源,所有的虚拟机实例都是和Zygote共享同一块内存区域,这样大大减小了内存的开销。Android将创建的进程的堆内存划分为两块,其中一块Zygote Heap,就是为了减少相同内容的拷贝,这部分堆内存所有DVM共享,而进程自己的数据读写全部在Active Heap中进行。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农帮派 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MLOps主要是数据工程
作者 | Kostas Pardalis 译者 | 张乐 审校 | 平川 MLOps 和数据工程之间有很大的重叠。 MLOps 主要是数据工程简而言之,MLOps 是一种新出现的工具类别,用于管理数据基础设施,主要面向 ML 用例,按照设想,这类用例会有独特的需求。 几年过去了,随着热度消退,MLOps 与数据工程的重叠显然比大多数人想象的要多。让我们看看这是为什么以及这对 MLOps 生态系统意味着什么。 介    绍 MLOps 是一个相对比较新的术语。在谷歌趋势上快速地搜索一下就可以
深度学习与Python
2023/04/10
3720
MLOps主要是数据工程
什么是MLOps?为什么要使用MLOps进行机器学习实践
随着数字化和计算能力的发展,机器学习(Machine Learning)技术在提高企业生产力方面所涌现的潜力越来越被大家所重视,然而很多机器学习的模型及应用在实际的生产环境并未达到预期,大量的ML项目被证明是失败的。从机器学习的发展历程来看,早期ML社区广泛关注的是ML模型的构建,确保模型能在预定义的测试数据集上取得较好的表现,但对于如何让模型从实验室走向用户的桌面,并未大家所关注。
人工智能日报
2023/06/22
1.5K0
DataOps、MLOps 和 AIOps,你要的是哪个Ops?
如何在 DataOps、MLOps 和 AIOps 之间进行选择?大数据团队应该采取哪种 Ops?
深度学习与Python
2021/02/22
1.5K0
DataOps、MLOps 和 AIOps,你要的是哪个Ops?
AIGC独角兽官宣联手,支持千亿大模型的云实例发布,“云计算春晚”比世界杯还热闹
现在AI最火的方向是什么?那必须是AIGC(AI Generated Content,利用人工智能技术来生成内容)。
量子位
2022/12/09
8530
AIGC独角兽官宣联手,支持千亿大模型的云实例发布,“云计算春晚”比世界杯还热闹
re:Invent 2022 全回顾:看见云计算的力量,透视未来的云计算
作者 |刘燕 不知不觉, re:Invent 已经走过了 11 个年头。11 月 28 日,一年一度的 re:Invent 2022 全球大会开幕。 这是自 2019 年疫情以来的首次现场活动,因此也格外有意义。据悉,re:Invent 2022 吸引了约 50000 人现场参加,与疫情前的水平相当。而线上参加的人数超过 300000 人。 这场为期五天的云计算盛会又给大家带来了很多新的惊喜。 重要发布综述 在 re:Invent 2022 上,亚马逊云科技推出了广泛的新应用程序和产品增强功能,旨在优
深度学习与Python
2023/03/29
6880
re:Invent 2022 全回顾:看见云计算的力量,透视未来的云计算
推动机器学习创新和采用的六大主要趋势
来源:ScienceAI 本文约1600字,建议阅读9分钟 近年来,在多种因素的推动下,机器学习 (ML) 经历了快速转型和采用。 关于人工智能(AI)和 ML 为什么会不断发展,有很多观点。麦肯锡最近的一份报告将 ML 的工业化和应用 AI 确定为今年的主要趋势之一。在本周 AWS re:Invent 大会的一次会议上,亚马逊(AWS)人工智能和机器学习副总裁兼总经理 Bratin  概述了这家云巨头看到的六大关键趋势,这些趋势有助于推动 2022 年及以后的创新和采用。 AWS 声称其 AI/ML 服
数据派THU
2023/03/29
4300
推动机器学习创新和采用的六大主要趋势
MLOps:构建生产机器学习系统的最佳实践
你可能已经听过很多次了,但只有一小部分机器学习模型投入生产。部署和运行机器学习模型对于大多数已经开始将ML应用于用例的行业来说都是一个挑战。在这篇文章中,我将分享一些MLOps的最佳实践和技巧,它们将允许您在生产环境中使用您的ML模型并正确地操作它。在我们开始之前,让我们讨论一下我们可能都知道的典型的ML项目生命周期。
deephub
2021/04/16
1.3K0
超大规模云计算供应商重点投资人工智能云服务
亚马逊网络服务(AWS)、微软、谷歌、IBM等公司在过去一年中增加了数十种云计算人工智能工具,并且具有不同程度的复杂性。这些平台是否选用这些工作负载取决于人工智能和机器学习如何适应企业的业务战略。尽管
静一
2018/03/19
1.1K0
超大规模云计算供应商重点投资人工智能云服务
做个务实创新的少年,亚马逊云科技如何开启下一个十五年?
2006年,亚马逊发布全球第一个云计算服务Amazon S3,云计算的商业化时代由此拉开序幕,引发了IT基础设施向按需分配、按需付费的模式转变,直到发展成为今天全球都离不开的IT基础设施。
科技云报道
2022/04/16
4700
做个务实创新的少年,亚马逊云科技如何开启下一个十五年?
最新Claude2.1、Llama 2随便用!亚马逊把生成式AI开发门槛打下去了
例如Meta家的Llama 2 70B、Antropic家的Claude 2.1等等:
量子位
2023/12/01
1840
最新Claude2.1、Llama 2随便用!亚马逊把生成式AI开发门槛打下去了
MLOps 概论
MLOps(Machine Learning Operations)是一个关注于将机器学习模型开发和部署流程标准化、自动化以及持续集成与持续部署(CI/CD)的实践领域。MLOps旨在解决机器学习项目在开发、测试、部署和监控过程中的复杂性和挑战,以确保机器学习模型的生命周期管理能够高效、可靠和可扩展。
Surriento
2024/08/05
1240
是时候好好治理 AI 模型了!
作者 | 赵钰莹,郑思宇 如今,有越来越多的企业将机器学习引入到不同的流程中,对机器学习模型的期待也越来越高。与这种期待相反的是,我们对机器学习治理的关注度显然不够,还没有找到好的方式让整个流程运转地更加流畅、透明度更高,甚至连最佳实践可能的样子都十分模糊。在刚刚结束的 2022  re:Invent 大会上,亚马逊云科技数据与机器学习副总裁 Swami Sivasubramanian 博士针对 Amazon SageMaker 发布的一系列更新,扩大了机器学习在模型生命周期中的治理规模,让模型开发初步告别
深度学习与Python
2023/03/29
4060
是时候好好治理 AI 模型了!
亚马逊 re:Invent 2021:塑造以人为本的未来科技 | Q推荐
11 月 30 日,2021 亚马逊云科技 re:Invent 全球大会正式开启,作为全球云计算产业的盛会,re:Invent 每年坚持发布创新技术和服务、并邀请全球不同行业、规模的客户以及亚马逊云科技合作伙伴分享最新的商业创新实践。今年是 re:Invent 的第 10 年,新产品和新服务依然是讨论的焦点。
深度学习与Python
2021/12/16
8750
亚马逊推出新的机器学习芯片Inferentia;提供数据标记服务;全新GPU instance
亚马逊宣布推出一款由AWS设计的芯片Inferentia,专门用于部署带有GPU的大型AI模型,该芯片预计于明年推出。
AiTechYun
2018/12/24
8310
亚马逊推出新的机器学习芯片Inferentia;提供数据标记服务;全新GPU instance
基于Machine Learning Studio的企业级MLOps架构设计指南
随着机器学习(ML)技术在企业中的广泛应用,如何高效管理从数据准备到模型部署的完整生命周期成为关键挑战。MLOps(机器学习运维)通过融合DevOps理念与机器学习特性,实现了模型开发与运维的协同优化。 Machine Learning Studio(以下简称Azure ML Studio)作为微软推出的云原生机器学习平台,提供了覆盖全生命周期的工具链,支持企业构建标准化、可扩展的MLOps架构。本文将从架构设计原则、核心组件、实施路径及最佳实践等方面,深入探讨基于Aure ML Studio的企业级MLOps解决方案。
Michel_Rolle
2024/12/26
1.5K0
2018年大行其道的10种机器学习的工具和框架
2017年是机器学习大放异彩的一年,这归功于众多公司广泛而深入地研究和开发更新颖、更高效的工具和框架。这里介绍,有望在2018年大行其道的10种机器学习的工具和框架。 1.亚马逊Sagemaker A
机器人网
2018/04/12
1K0
2018年大行其道的10种机器学习的工具和框架
地理空间AI突围:机器学习云平台穿越数据迷雾
千百年来,当洪水、龙卷风和野火等自然灾害发生时,往往会造成难以预期的损失。而伴随云计算、大数据、AI等新兴技术的协同发力,这些灾害的破坏性更有可能得到控制,甚至在萌芽之初就被扼杀在摇篮里。
IT创事记
2023/02/17
6820
地理空间AI突围:机器学习云平台穿越数据迷雾
激荡十年,从未来窗口 re:Invent 看云计算发展变迁 | Q推荐
作者 | 张雅文   从最初被质疑仅仅是个广告概念,到如今形成巨大的产业生态,云计算已经高速发展十余年。这十余年间,IT 世界天翻地覆,无数新理念、新技术不断涌现,其变革速度让开发者应接不暇,没有谁敢确信,自己正走在时代的最前沿。 或许也正是因此,re:Invent 作为云计算领域的全球最大规模的会议,每年都能吸引上万名开发者去往拉斯维加斯。今年是 re:Invent 第十年,在过去的十年中,re:Invent 曾无数次预见未来,其部分产品发布堪比权威机构的调研定调,使得这场盛会几乎成为全世界开发者看向未
深度学习与Python
2023/04/01
5050
激荡十年,从未来窗口 re:Invent 看云计算发展变迁 | Q推荐
在re:Invent 2022大会上,我们看到了云计算的未来
AI 圈里很多人都听说过开源 AI 作画扩散模型 Stable Diffusion,见识过 AI 图片横扫朋友圈。最近大模型兴起除了造梗图之外,应用前景也在逐渐清晰,AIGC(人工智能生成内容)成为了众多科技公司正在尝试的领域。
机器之心
2022/12/16
5640
在re:Invent 2022大会上,我们看到了云计算的未来
只需3行代码自动生成高性能模型,支持4项任务,亚马逊发布开源库AutoGluon
这大概就是为什么亚马逊开发了AutoGluon,这是一个开放源代码库,旨在使开发人员仅用几行代码即可编写AI嵌入的应用程序。它已经在GitHub上公开发布。
AI科技大本营
2020/02/12
9670
只需3行代码自动生成高性能模型,支持4项任务,亚马逊发布开源库AutoGluon
推荐阅读
相关推荐
MLOps主要是数据工程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验