Google于2007年底正式发布了Android SDK,Dalvik虚拟机也第一次进入了人们的视野。它的作者是丹.伯恩斯坦(Dan Bornstein)。Dalvik虚拟机作为Android平台的核心组件,拥有如下几个特点: 体积小,占用内存空间小...
分类:
移动开发 时间:
2015-01-08 20:20:31
阅读次数:
182
Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik...
分类:
移动开发 时间:
2014-12-27 12:39:14
阅读次数:
228
Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面概述:每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainThread),主线程负责处理和ui相关的事件,因此主线程通常又叫UI线程。而由于Android采用UI单...
分类:
移动开发 时间:
2014-12-26 14:20:04
阅读次数:
214
Android 5.0,代号 Lollipop,源码终于在2014年12月3日放出,国内一大批厂商跟进。最大的改变是默认使用 ART(Android Runtime) ,替换了之前的 Dalvik 虚拟机,提出了 Material Design 界面风格。之前发布的 app 可能需要作一些改动,.....
分类:
移动开发 时间:
2014-12-24 19:50:59
阅读次数:
284
前面我们分析了Dalvivk虚拟机堆的创建过程,以及Java对象在堆上的分配过程。这些知识是理解Dalvik虚拟机垃圾收集过程的基础。垃圾收集是一个复杂的过程,它要将那些不再被引用的对象进行回收。一方面要求Dalvik虚拟机能够标记出哪些对象是不再被引用的。另一方面要求Dalvik虚拟机尽快地回收内存,避免应用程序长时间停顿。本文就将详细分析Dalvik虚拟机是如何解决上述问题完成垃圾收集过程的。...
分类:
其他好文 时间:
2014-12-22 02:04:17
阅读次数:
255
一般Java虚拟机要求支持verbosegc选项,输出详细的垃圾收集调试信息。dalvik虚拟机很安静的接受verbosegc选项,然后什么都不做。dalvik虚拟机使用自己的一套LOG机制来输出调试信息。如果在Linux下运行adb logcat命令,可以看到如下的输出:D/dalvikvm( 7...
分类:
其他好文 时间:
2014-12-20 00:44:20
阅读次数:
232
在前面一文中,我们分析了Dalvik虚拟机的运行过程。从中可以知道,Dalvik虚拟机在调用一个成员函数的时候,如果发现该成员函数是一个JNI方法,那么就会直接跳到它的地址去执行。也就是说,JNI方法是直接在本地操作系统上执行的,而不是由Dalvik虚拟机解释器执行。由此也可看出,JNI方法是And...
分类:
其他好文 时间:
2014-12-19 19:01:17
阅读次数:
162
一般我们在遇到内存问题时,解决方案大体有如下几种:
1.在内存引用上做些处理,常用的有软引用、强化引用、弱引用;
2.在内存中加载图片时直接在内存中做处理,如:边界压缩;
3.动态回收内存;
4.优化Dalvik虚拟机的堆内存分配;
5.自定义堆内存大小;
6.尽量不要使用setImageBitmap、setImageResource或BitmapFactory.decodeResou...
分类:
移动开发 时间:
2014-12-17 12:57:52
阅读次数:
160
一、DEX相关基础知识1、什么是DEX?DEX是DalvikEXecutable的简称。打包.class文件为单一DEX文件并运行于Dalvik虚拟机。DEX文件打包进APK文件中(本质上是jar或zip文件)。安装时,系统提取DEX文件进行检查和验证。第一次运行时,系统完成DEX优化,转换成ode...
分类:
移动开发 时间:
2014-12-17 09:03:41
阅读次数:
306
一、?Dalvik虚拟机 其实也算是一个JAVA虚拟机,只不过它执行的不是class文件,而是dex文件 Dalvik虚拟机和ART虚拟机都实现了三个用来抽象Java虚拟机的接口: ??1.?JNI_GetDefaultJavaVMInitArgs?--?获取虚拟...
分类:
移动开发 时间:
2014-12-16 11:57:56
阅读次数:
189