android 58 jvm和dvm的区别(Dalvil VM)

java程序在jvm和dvm的执行过程:

#jvm和dvm的区别(Dalvil VM)
谷歌刚开发的安卓系统用的就是JVM,JVM版权属于sun公司也就是Oracle公司,后来用的是DVM,由于版权问题。DVM是基于openjdk做的2次开发,DVM解决了JVM的效率问题,jvm的运行效率会低。
jvm里面class代码必须要在jvm里面进行解释后在底层操作系统里面执行,真正执行是底层操作系统执行,由于必须在jvm里面解释所以效率要低。
dvm会先把class文件转换为dex文件之后再去解释执行,这样转换之后效率就会高。
jvm里面如果有1000个class文件,把他加载进jvm进行解释执行,就要遍历这1000个class文件进行加载操作,那么效率就会低。如果先把这1000个class文件先转换为dex文件,然后加载解释执行这一个dex文件效率就会高。
java代码是一次编译导出运行,windows有windows的jvm,linux有linux的jvm,
时间: 2024-12-30 03:45:37

android 58 jvm和dvm的区别(Dalvil VM)的相关文章

JVM与DVM的区别

共同点: 解释执行byte code 字节码文件 在操作系统的进程运行一个VM,并执行一个单独的程序 不同点: 程序的结构不同:JVM字节码由多个.class文件组成,Dalvik只包含一个.dex格式的文件,这个文件包含了程序中所有的类. 架构不同:Dalvik是register-based基于寄存器(CPU),Sun JDK是基于stack-based基于栈(内存). Dalvik优势:编译是提前优化代码而不是等到运行时. 虚拟机很小,占空间小.可以满足可高效运行多种虚拟机实例. 常量池修改

Android系统架构、JVM和DalvikVM的区别

一.系统框架 1.Anroid大致分为四层结构,五块区域 1)应用程序层(Applications) 所有安装在手机上的应用程序都属于这一层. 2)应用程序框架(Application Framework) 提供大量的API供开发人员使用,Android自带的一些核心应用就是使用这些API完成的. 3)函数库(Libraries) -Surface Manager:管理对显示子系统的访问,并可以对多个应用程序的2D和3D图层机提供无缝整合 -Media Framework:基于PacketVid

【整理】Android中的gravity和layout_gravity区别

[背景] 在Android中,想要设置个按钮的水平对齐,都累死了: [已解决]ADT中已设置TableLayout布局的情况下如何设置按钮居中对齐    所以现在有必要搞清楚,到底gravity和layout_gravity到底有啥区别. 1.参考: Android – gravity and layout_gravity Android中gravity与layout_gravity的区别 中的解释,可以总结为: android:gravity : 表示当前View,即控件,内部的东西的,对齐方

Android support V3 v7 v13的区别

简单翻译: V4用于1.6到更高的API使用. V7是2.1到更高的API使用,其中包含ACtionBar. V13是3.2到更高的API的使用. 原文: v4 Support Library This library is designed to be used with Android 1.6 (API level 4) and higher. It includes the largest set of APIs compared to the other libraries, inclu

android:id="@android:id/tabhost" 、android:id="@+id/llRoot" 、android:id="@id/llRoot" 之间的区别

由于快要放暑假了,所以最近这俩周把Android方面的知识复习一下,准备找个实习工作. 顺便把自己的总结更大家分享一下,共同进步,谢谢.... 一. android:id="@android:id/tabhost"   是调用系统内部的ID 和代码中 mTabContent = (FrameLayout) findViewById(com.android.internal.R.id.tabcontent); 是一回事. 二. android:id="@+id/llRoot&q

二、 Android中gravity与layout_gravity的区别

android:gravity:设置的是控件自身上面的内容位置 android:layout_gravity:设置控件本身相对于父控件的显示位置. 看下如下代码段 <?xml version="1.0" encoding="utf-8"?><!-- android:gravity设置了按钮上面的文字的显示位置,而android:layout_gravity设置了按钮在布局中的显示位置.--><LinearLayout xmlns:and

Android之WebViewClient与WebChromeClient的区别

Android之WebViewClient与WebChromeClient的区别 2012-05-05      0个评论       收藏    我要投稿 ANDROID应用开发的时候可能会用到WEBVIEW这个组件,使用过程中可能会接触到WEBVIEWCLIENT与WEBCHROMECLIENT,那么这两个类到底有什么不同呢?WebViewClient主要帮助WebView处理各种通知.请求事件的,比如: onLoadResourceonPageStartonPageFinishonRece

Android中Rect和RectF的区别与联系

Android中Rect和RectF的区别与联系 1. 联系: 都是用于表示坐标系中的一块矩形区域,并可以对其做一些简单操作.这块矩形区域,需要用左上和右下两个坐标点表示. 2. 区别: (1).精度不一样.Rect是使用int类型作为数值,RectF是使用float类型作为数值. (2).两个类型提供的方法也不是完全一致. 3. 代码部分 package com.pansoft.viewdemo.view; import android.content.Context; import andr

【Android】android中Invalidate和postInvalidate的区别

Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用. Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用. Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在