Andriod——区别DVM与JVM (2)

区别DVM与JVM

1.首要差别

Dalvik: 基于寄存器,编译和运行都会更快些

JVM: 基于栈, 编译和运行都会慢些

2.字节码的区别

Dalvik: 执行.dex格式的字节码,是对.class文件进行压缩后产生的,文件变小

JVM: 执行.class格式的字节码

3.运行环境的区别    

Dalvik : 一个应用启动都运行一个单独的虚拟机运行在一个单独的进程中

JVM: 只能运行一个实例, 也就是所有应用都运行在同一个JVM中

JVM和DVM的区别

  1. DVM是Dalvik Virtual Machine的缩写,是安卓虚拟机的缩写(为什么不叫AVM-Android Virtual Machine呢?原因是其作者以其祖上居住过的名为Dalvik的村子命名)。
  2. DVM是针对JVM(Java Virtual Machine)而言的,因为JVM是Oracle公司(原SUN公司)的产品,担心版权的问题,既然Java是开源的,索性就研究了JVM,写出了DVM
  3. JVM和DVM的主要区别如下:

a) 执行的直接码文件不一样

Java

.java文件 -> .class文件 -> .jar文件

Android

.java文件 –> .class文件 -> .dex文件

如上图所示,.jar文件里面包含多个.class文件,每个.class文件里面包含了该类的头信息(如编译版本)、常量池、类信息、域、方法、属性等等,当JVM加载该.jar文件的时候,会加载里面的所有的.class文件,这样会很慢,而移动设备的内存本来就很小,不可能像JVM这样加载,所以它使用的不是.jar文件,而是.apk文件,该文件里面只包含了一个.dex文件,这个.dex文件里面将所有的.class里面所包含的信息全部整合在一起了,这样再加载就很快了。.class文件存在很多的冗余信息,dex工具会去除冗余信息,并把所有的.class文件整合到.dex文件中。减少了I/O操作,提高了类的查找速度.南京宝云java安卓课程打架报名啦!

b) 基于的架构不一样

Java基于栈的架构.栈是内存上面的一段连续的存储空间

Android基于寄存器的架构.寄存器是CPU上面的一块存储空间

所以,CPU直接访问自己上面的一块空间的数据的效率肯定要大于访问内存上面的数据

时间: 2024-08-09 10:26:00

Andriod——区别DVM与JVM (2)的相关文章

Andriod——区别DVM与JVM

区别DVM与JVM 1.首要差别 Dalvik: 基于寄存器,编译和运行都会更快些 JVM: 基于栈, 编译和运行都会慢些 2.字节码的区别 Dalvik: 执行.dex格式的字节码,是对.class文件进行压缩后产生的,文件变小 JVM: 执行.class格式的字节码 3.运行环境的区别 Dalvik : 一个应用启动都运行一个单独的虚拟机运行在一个单独的进程中 JVM: 只能运行一个实例, 也就是所有应用都运行在同一个JVM中 JVM和DVM的区别 DVM是Dalvik Virtual Ma

class 文件与dex文件区别 (dvm与jvm区别)及Android DVM介绍

区别一:dvm执行的是.dex格式文件  jvm执行的是.class文件   android程序编译完之后生产.class文件,然后,dex工具会把.class文件处理成.dex文件,然后把资源文件和.dex文件等打包成.apk文件.apk就是android package的意思. jvm执行的是.class文件. 区别二:dvm是基于寄存器的虚拟机  而jvm执行是基于虚拟栈的虚拟机.寄存器存取速度比栈快的多,dvm可以根据硬件实现最大的优化,比较适合移动设备. 区别三:.class文件存在很

Android课程---第一课

Android是一种基于Linux的开源的操作系统 主要使用于智能设备,如智能手机.平板电脑和智能电视等 由Google公司领头开发并推广,2008年推出第一个版本. 此系统最初由”安卓之父"Andy Rubin(安迪-鲁宾)开发(2003年). 区别DVM与JVM: 1.首要差别 Dalvik: 基于寄存器,编译和运行都会更快些 JVM: 基于栈, 编译和运行都会慢些 2.字节码的区别 Dalvik: 执行.dex格式的字节码,是对.class文件进行压缩后产生的,文件变小 JVM: 执行.c

android入门:第一天

android是什么? 是一个基于linux开源的操作系统,主要适用于智能设备,如智能手机,平板,智能电视,智能手表,谷歌眼镜,智能家居,由google开发,2008年开发出第一个版本 android的各个版本都有相应的名称: 关注的版本:4.xx,5.xx; 分辨率:720p最多; android与ios区别: 一个是开源,一个是封闭的: android系统架构: 最底层: linux内核:linux核心技术,各种驱动(wifi driver,蓝牙driver,电池驱动,音频驱动,键盘驱动..

002--JDK、JRE、JVM区别

jdk.jre.jvm区别 1.JDK Java Development ToolKit(Java开发工具包). JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API ). JDK有以下三种版本:J2SE标准版是我们通常用的一个版本:J2EE企业版使用这种JDK开发J2EE应用程序:J2ME主要用于移动设备.嵌入式设备上的java应用程序. 2.JRE Ja

JVM思考-ClassLoader.loadClasshe和Class.forName区别

JVM思考-ClassLoader.loadClasshe和Class.forName区别 目录:JVM总括:目录 见博客第四节:JVM总括四-类加载过程.双亲委派模型.对象实例化过程 原文地址:https://www.cnblogs.com/java-zzl/p/9905223.html

Android内存优化(一)DVM和ART原理初探

要学习Android的内存优化,首先要了解Java虚拟机,此前我用了多篇文章来介绍Java虚拟机的知识,就是为了这个系列做铺垫.在Android开发中我们接触的是与Java虚拟机类似的Dalvik虚拟机和ART虚拟机,这一篇我们就来了解它们的基本原理. 1.Dalvik虚拟机 Dalvik虚拟机( Dalvik Virtual Machine ),简称Dalvik VM或者DVM.它是由Dan Bornstein编写的,名字源于他的祖先居住过的名为Dalvik的小渔村.DVM是Google专门为

Android虚拟机与Java虚拟机的区别

Dalvik虚拟机存在于Android系统,JVM是Java虚拟机,两者都是虚拟机,它们之间有什么区别呢?本文就对两者进行比较,讲述它们的不同. 1.定义: Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一.它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统.(dx 是一套工具,可以将 Java .class 转换成 .dex

阿里巴巴 说说 Android 虚拟机Dalvik与ART区别在哪里?

本专栏专注分享大型Bat面试知识,后续会持续更新,喜欢的话麻烦点击一个关注 废话不多说先上面试目录 Android开发中我们接触的是与Java虚拟机类似的Dalvik虚拟机和ART虚拟机,下面梳理一下三者区别和原理: 一,Dalvik虚拟机 Dalvik虚拟机( Dalvik Virtual Machine ),简称Dalvik VM或者DVM.Dalvik 发音有道词典并没有收录.说说来历,它是由Dan Bornstein编写的,名字源于他的祖先居住过的名为Dalvik的小渔村.DVM是Goo