热修复技术分为几部分: 原理介绍 Android HotFix源码分析 自定义框架 1.Android分包MultiDex原理 首先Dex是什么东西? Dex就是Window里面的exe文件 也就是可执行问题。 Android没有用传统的Java虚拟机,而是使用dalvik虚拟机。当APK安装到手机 ...
分类:
移动开发 时间:
2016-08-28 11:10:25
阅读次数:
372
1.启动加载完内核2.执行init进程 ----> 设备初始化工作 a1. 读取inic.rc a2. 启动Zygote进程 ----> 该进程是所有进程的孵化器 b1. 初始化dalvik虚拟机 b2. 启动system_server进程 c1. 通过socket方式发送命令给Zygote进... ...
分类:
移动开发 时间:
2016-08-14 07:11:06
阅读次数:
184
ART运行时垃圾收集(GC)过程分析 ART运行时与Dalvik虚拟机一样,都使用了Mark-Sweep算法进行垃圾回收,因此它们的垃圾回收流程在总体上是一致的。但是ART运行时对堆的划分更加细致,因而在此基础上实现了更多样的回收策略。不同的策略有不同的回收力度,力度越大的回收策略,每次回收的内存就 ...
分类:
移动开发 时间:
2016-07-19 15:30:23
阅读次数:
186
整个文件的布局
文件头
索引区
string_ids
type_ids
proto_ids
field_ids
method_ids
数据区
class_def
class_data_item
code_item
data
附录
测试用的Dex的java代码
参考资料
整个文件的布局整个Dex文件可以分成三部分,文件头、索引区、数据区,如下图所示。 文件头
记录Dex文件的概览、包含文件大小、校验...
分类:
其他好文 时间:
2016-07-17 00:04:40
阅读次数:
297
Android内存分配
Java Head(Dalvik Head),这部分的内存是由Dalvik虚拟机管理,可以通过java的new方法来分配内存;而内存的回收是符合GC Root回收规则。内存的大小受到系统限制,如果使用内存超过App最大可用内存时会抛出OOM错误。
Native Head,这部分内存,不受Dalvik虚拟机管理的,内存的分配和回收是通过C++的方式来创建和释放的,没有自动...
分类:
其他好文 时间:
2016-07-14 15:28:27
阅读次数:
909
https://developer.android.com/training/articles/memory.html#Android对于任何软件来说RAM都是一个非常重要的资源,但是由于物理内存总是有限的,所以内存对于手机操作系统来说也更加重要。尽管Android的Dalvik虚拟机会执行GC,但是仍然不允许忽略应该在什么时候,什么地方分配和释放内存为了垃圾回收器能够回收app的内存,需要避免内存...
分类:
移动开发 时间:
2016-07-11 17:12:41
阅读次数:
301
jvm : java虚拟机 sun dvm: dalvik虚拟机 google 区别: 1.基于的架构不同,jvm 基于栈架构,栈是位于内存上的一个空间,执行指令操作,需要向cpu寻址; dvm 基于寄存器架构,寄存器是cpu的一个组成部分,执行指令操作无需寻址直接执行。 2.执行文件的格式不同,j ...
分类:
其他好文 时间:
2016-07-05 22:29:19
阅读次数:
161
Android’s Dalvik Java 与 Java SE 进行比较: @、Dalvik虚拟机是register-based machine;Java SE虚拟机是stack machine。 @、从Android 2.2 版本开始引进JIT(Just In Time)编译器,之前是纯解释器。 ...
分类:
移动开发 时间:
2016-06-20 20:33:07
阅读次数:
202
SO库Linux系统下的动态库文件,就像win系统下的dll文件一样。将APK,改成RAR,在Lib目录下.dex(classes.dex)Dex是Android系统中可以在Dalvik虚拟机上直接运行的文件格式。java源代码经过ADT的复杂编译后转换成Dex文件,这是一个逐步优化的过程。Dex文 ...
分类:
移动开发 时间:
2016-06-02 19:47:11
阅读次数:
606
最近在研究一个安卓项目内存优化的问题,确实这是一个比较系统的工程,和个人的代码习惯以及对jvm原理的掌握有很大关系,下面提示一些注意点
1. 内存优化
Android系统对每个软件所能使用的RAM空间进行了限制(如:Nexus one 对每个软件的内存限制是24M),同时Java语言本身比较消耗内存,dalvik虚拟机也要占用一定的内存空间,所以合理使用内存,...
分类:
移动开发 时间:
2016-05-27 12:00:16
阅读次数:
308