Dalvik虚拟机在调用一个成员函数的时候,如果发现该成员函数是一个JNI方法,那么就会直接跳到它的地址去执行。也就是说,JNI方法是直接在本地操作系统上执行的,而不是由Dalvik虚拟机解释器执行。由此也可看出,JNI方法是Android应用程序与本地操作系统直接进行通信的一个手段。
Dalvik虚拟机除了可以执行Java代码之外,还可以执行Native代码,也就是C/C++函数。这些...
分类:
移动开发 时间:
2015-06-07 15:53:25
阅读次数:
154
文章目录:
一、虚拟机简述
二、Java虚拟机简述
三、Dalvik虚拟机简述
四、Dalvik虚拟机与Java虚拟机的区别
五、Dalvik虚拟机执行原理简述...
分类:
移动开发 时间:
2015-06-03 21:43:20
阅读次数:
158
Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。Android主要应用于ARM平台,但不仅限于AR...
分类:
移动开发 时间:
2015-05-27 12:06:22
阅读次数:
177
声明:本文根据多篇博客整理,作为学习笔记,非常感谢他们贡献。 每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainThread),主线程负责处理和ui相关的事件,因此主线程通...
分类:
移动开发 时间:
2015-05-27 10:27:41
阅读次数:
259
Android是为移动设备而设计的,所以应该关注应用的内存使用情况。尽管Android的Dalvik虚拟机会定期执行垃圾回收操作,但这也不意味着就可以忽视应用在何时何处进行内存分配和释放。为了提供良好的用户体验,做到系统在不同应用间流畅切换,当用户和应用无交互时,避免应用不必要的内存消耗是很重要的。
尽管在开发过程中很好的遵守了《管理应用内存》(Managing Your App Memory )中的原则(也是应该遵守的),仍然可能会有对象泄露或引入其他的内存bug。...
分类:
移动开发 时间:
2015-05-18 10:57:18
阅读次数:
290
Android是为移动设备而设计的,所以应该关注应用的内存使用情况。尽管Android的Dalvik虚拟机会定期执行垃圾回收操作,但这也不意味着就可以忽视应用在何时何处进行内存分配和释放。为了提供良好的用户体验,做到系统在不同应用间流畅切换,当用户和应用无交互时,避免应用不必要的内存消耗是很重要的。...
分类:
移动开发 时间:
2015-05-18 10:45:13
阅读次数:
246
Dalvik虚拟机存在于Android系统,JVM是Java虚拟机,两者都是虚拟机,它们之间有什么区别呢?本文就对两者进行比较,讲述它们的不同。
1.定义:
Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种...
分类:
移动开发 时间:
2015-05-16 09:18:23
阅读次数:
266
从Zygote进程启动过程分析过程中,我们知道,dalvik虚拟机的启动过程是从AndroidRuntime::startVm(JavaVM**
pJavaVM, JNIEnv** pEnv)函数开始的,详细时序图如下:
下面我们来逐步详细地分析一下每个步骤。
1.startVm(AndroidRuntime.cpp)
/*
* Start the Dalvik Virtual...
分类:
其他好文 时间:
2015-05-08 16:32:47
阅读次数:
309
Dalvik字节码有着自己的类型,方法与字段表示方法,这些方法与Dalvik虚拟机指令集一起组成了一条条的Dalvik汇编代码。
1.类型
Dalvik字节码只有两种类型,基本类型与引用类型。Dalvik使用这两种类型来表示Java语言的全部类型,除了对象与数组属于引用类型外,其他的Java类型都是基本类型。BakSmali严格遵守DEX文件格式中的类型描述符定义。类型描述符对照如下表
...
分类:
其他好文 时间:
2015-05-07 20:27:03
阅读次数:
148
一 Dalvik指令格式1.1 位描述Dalvik汇编代码由Dalvik指令组成,指令语法由指令的位描述与指令格式辨识来决定。位描述的约定如下所示:
每16位的字采用空格分隔开来;
每个字母表示四位,每个字符顺序从高字节开始,排列到低字节,每四位之间可能使用“|”来表示不同的内容。
顺序采用A~Z的单个大写字母作为一个4位操作码,op表示一个8位的操作码;
“Ø”表示这字段所有位为0值。
举例,如以...
分类:
移动开发 时间:
2015-05-05 19:46:40
阅读次数:
299