深入理解Java虚拟机——JVM、DVM(dalvik)和ART之间的区别

JvmDalvikART 本文参考了奔跑吧李博guanpj的博客,如有侵权,请通知删除。 定义 JAM: JVM(Java Virtual Machine)是一种软件实现,执行像物理程序的机器。JVM并是不专为Java所实现运行的,只要其他编程语言的编译器能生成Java字节码,那这个语言也能实现在JVM上运行。因此,JVM通过执行Java bytecode可以使java代码在不改变的情况下在各种硬件之上。常用的一句话:一... 阅读详情

一、Dalvik介绍

Dalvik VM是Android平台的核心组成部分之一,它的名字来源于冰岛一个名为Dalvik的小渔村。Dalvik VM并不是一个Java虚拟机,它没有遵循Java虚拟机规范,不能直接执行Java的Class文件,使用的是寄存器架构而不是JVM中常见的栈架构。但是它与Java又有着千丝万缕的联系,它执行的dex(Dalvik Executable)文件可以通过Class文件转化而来,使用Java语法编写应用程序,可以直接使用大部分的Java API等。

2014年6月25日,Android L 正式亮相于召开的谷歌I/O大会,Android L 改动幅度较大,谷歌将直接删除Dalvik,代替它的是传闻已久的ART。

二、ART介绍

在Dalvik下,应用每次运行都需要通过即时编译器(JIT)将字节码转换为机器码,即每次都要编译加运行,这一机制并不高效,但让应用安装比较快,而且更容易在不同硬件和架构上运行。

ART完全改变了这种做法,在应用安装时就预编译字节码到机器语言,在移除解释代码这一过程后,应用程序执行将更有效率,启动更快。

三、Dalvik与JVM的区别

1、Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于编译后变大的程序来说,在它们执行的时候,花费的时间更短。
2、Java虚拟机运行java字节码,Dalvik虚拟机运行的是其专有的文件格式Dex

四、Dalvik与ART的区别

1、ART与Dalvik最大的不同在于,在启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。

2、ART占用空间比Dalvik大(字节码变为机器码之后,可能会增加10%-20%),这就是“时间换空间大法”。

3、预编译也可以明显改善电池续航,因为应用程序每次运行时不用重复编译了,从而减少了 CPU 的使用频率,降低了能耗。

阿里三面:JVMDalvikART三者的原理区别 点击“开发者技术前线”,选择“星标????”让一部分开发者看到未来回复“666”,获取一份专属大礼包JVMDalvikART三者的原理区别JVM是指某个特定的JAVA虚拟机实现 是... 阅读详情

相关推荐

虚拟机Jvmdalvikart联系区别

一、了解JVM JVM: java virtual machine,缩写JVM,一种能够执行java bytecode的虚拟机器,本质上是一种软件实现,也可以理解成以一条运行java bytecode的底层程序。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。 实际上,并不是仅有java源代码,能编译生成.class文件,也就是我们所说的字节码文件,下面是引用一张维基百科的图: 同样,python源码程序,也能最终编译成.class/.jar文件。 二、Jvm、dalv

HYM BLOG 4186

JVM(JAVA虚拟机)DVM(Dalvik虚拟机)ART虚拟机

简单介绍 JVM(JAVA虚拟机)DVM(Dalvik虚拟机)ART虚拟机区别

Crazy程序猿 1105

JVM,Dalvik,ART对比

一。JVM 基于栈 占用空间更少 为简化编译,常量池使用32位索引 标准JVM施行8位堆栈指令,Dalvic直接使用16位指令集作用于局部变量,局部变量通常来自4位“虚拟寄存器”区,这样减少dalvic指令计数,提高翻译速度 当andrid启动时,dalvic监视所有的程序,并且创建依存关系树,为每个程序优化代码,并存储缓存中,dalvic第一次加载后会生成cache文件,方便下次加载,所以第一次会很慢。 dalvic采取预先算好的Goto地址,每个指令对内存的访问都在64字节边界上对其,这样可以节省一个指

云梦九章~ 9828

java vm art_深入理解Java虚拟机——JVMDVMdalvikART之间区别

一、Dalvik介绍Dalvik VM是Android平台的核心组成部分之一,它的名字来源于冰岛一个名为Dalvik的小渔村。Dalvik VM并不是一个Java虚拟机,它没有遵循Java虚拟机规范,不能直接执行Java的Class文件,使用的是寄存器架构而不是JVM中常见的栈架构。但是它与Java又有着千丝万缕的联系,它执行的dex(Dalvik Executable)文件可以通过Class文件...

weixin_30975527的博客 325

DalvikART

在-----讲解了Java虚拟机JVM相关的知识,但JVM主要是用于pc端的应用,针对Android设备中提出了DalvikART两种虚拟机,但关于这两种虚拟机涉及的知识点十分广,本文针对学习《Android晋级之光》平时的工作总结,作简单分享。 一、Dalvik 虚拟机 Dalvik 没有遵循JVM规范来实现,因此DalvikJVM存在以下不同点: 基于架构不同:JVM基于栈去读写数...

xk7298的博客 2647

JVMJava虚拟机Android虚拟机区别

虚拟机: JVM的作用是把平台无关的.class里面的字节码翻译成平台相关的机器码,来实现跨平台。DalvikArt(安卓5.0之后使用的虚拟机)就是安卓中使用的虚拟机虚拟机是什么,Jvm,Dalvik(DVM)Art三者之间区别 JVMAndroid虚拟机区别 区别一: dvm执行的是.dex格式文件 jvm执行的是.class文件 android程序编译完之后生产.class文件,然后,dex工具会把 .class文件处理成 .dex文件,然后把资源文件.dex文件等打包成

qq_35298279的博客 1451

android 虚拟机

0. 前言 Dalvik是Google公司自己设计用于Android平台的虚拟机Dalvik经过优化,使其更适合Android平台。具体优点会在下面JVM进行比较时说明。 2014年6月谷歌I/O大会,Android L 改动幅度较大,Google将直接删除Dalvik,代替它的是传闻已久的ART。 而ARTDalvik有什么联系区别呢? 0.1 先对Dalvik以及ART做简单介绍: 什么是DalvikDalvik是Google公司自己设计用于Android平台的Java虚拟机

C++ JAVA的专栏 362

Android虚拟机与ClassLoader类加载

Dalvik/ART 虚拟机 DVM(Dalvik virtual machine) 也是实现了JVM规范的一个虚拟器,默认使用CMS垃圾回收器,但是与JVM运行 Class 字节码不同,DVM执行 Dex(Dalvik Executable Format)** ——专为 Dalvik 设计的一种压缩格式。Dex 文件是很多 .class 文件处理压缩后的产物,最终可以在 Android 运行时环境执行。 而ARTAndroid Runtime) 是在 Android 4.4 中引入的一个开发..

qq_44076155的博客 277

虚拟机深入理解

本篇文章将会介绍Java虚拟机JVM)的结构等基础知识、DalvikDVM)/ART虚拟机JVM的比较。 将以JVM为代表进行讲解,因为DVM以及ART都是基于JVM进行改造的。 JVM结构如下图: 相关描述: 类加载器子系统的核心--ClassLoader负责将class字节码加载到虚拟机内存中。 虚拟机的内存按照逻辑划分为4大部分 垃圾收集器GC负责回收对象 本地方法...

LiPine的专栏 503

DEX文件基础前篇

DEX文件介绍,编码存储数据介绍,及文件结构概括

平芜尽处是春山 1080

Framework(1) - 概述

一、Android System Android系统从下到上分为Linux 内核、硬件抽象、系统库Dalvik、Framework、应用层5大部分。 1、应用层 Android的应用程序主要是用户界面(User Interface)方面的,通常以JAVA程序编写,其中还可以包含各种资源文件(放置在res目录中)JAVA程序及相关资源经过编译后,将生成一个APK包。 Andro...

lmcs87的专栏 418

安卓VM总结

            深入理解dvmjvm: https://blog.csdn.net/mr_zhaojy/article/details/52776254    Dalvik VM (DVM)Java VM (JVM)区别:https://blog.csdn.net/x356982611/article/details/21983267    JVMDVM(Dalvik VM)A...

不忘初心 2305

Dex文件结构

前言Class文件:即java的字节码文件,java源码文件编译后生成了字节码文件,然后被jvm执行,字节码文件中有一个非常重要的区域是常量池,编译的过程中,字节码文件并不会保存方法字段的最终内存布局信息,也就是说,方法字段并不像C/C++那样被编译成地址,jvm在加载Class文件的时候,需要从常量池获取对应的符号引用,再在类创建时或运行时解析并翻译到具体的内存地址中【参考:深入理解Java

有码走遍天下,无码寸步难行 4175

Dalvik vm (DVM)与java vm (JVM)区别android为什么要用DVM.

编译后文件格式: Dalvik vm (DVM):.java-->,class-->.jar      ----(jdk  javac) java vm (JVM):.java -->.class-->.dex-->,odex     -----(sdk .dex) 基于的架构: Dalvik vm (DVM):基于栈的架构 java vm (JVM):基于寄存器的架构

yichunlu 1189

JVMDalvikART区别

前言: 无论是java后端开发还是安卓开发,我们首先要了解底层运行的虚拟机java后端开发使用的是JVM虚拟机Android虚拟机DVM(Dalvik VM) 以及ART。 什么是JVMJVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才能够运行Java程序,JAVA在编译后会生成类似于汇编语言的JVM字节码,与C语言编译后产生的汇编语言不同的是,C编译成的汇编语言会直接在硬件上跑,但JAVA编译后生成的字节码是在JVM上跑,需要由JVM把字节码翻译成机器指令,才能使JAVA程.

小度 757
上一篇: 深入理解Java虚拟机——JVM的内存结构和内存分配策略
下一篇: 深入理解Java虚拟机——JVM类加载机制(类加载过程和类加载器)
简简单单_zz
博客等级 码龄11年 118粉丝 63原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值