将安装过程创建的东西依次删除
安装是一个解压扫描并且往硬盘写入数据的过程,而卸载只需要将指定硬盘内存区域标识为可以填充数据,并不会将刚刚使用的硬盘区域全部写为0。这也是文件可以恢复的一个原因。
将apk中的dex文件使用dex优化过程,将其优化为一个.odex文件单独存放,这样可以提高app打开的速度,减少对ARM的占用(否则系统每次都要从apk中提取dex文件)。
java虚拟机是运行java字节码,java程序编译后生成的Java字节码保存在class文件中,java虚拟机通过解码class文件来运行程序。
java虚拟机基于栈结构,虚拟机需要频繁的从栈上读写数据,需要更多的指令分派与内存访问次数,这个过程耗费较多的cpu时间。
基于jit机制(just in time 即时编译技术)主要用于Android 5.0 以下。dalvik虚拟机运行dalvik字节码,dalvik字节码由java字节码转化而来,并且打包到一个DEX文件中。
java编译后形成class文件并压缩为jar包,jar包的所有类共用同一个常量池,进一步压缩形成dex文件。
dalvik虚拟机基于寄存器架构,数据的访问通过寄存器直接访问。
.dex文件被工具dexopt优化后生成.odex文件,dalvik直接加载执行该文件。
基于aot机制(ahead of time 预编译技术)运行本地机器码。
dex文件被工具dex2oat优化后生成oat文件,art虚拟机加载执行oat文件。
原文:https://www.cnblogs.com/FCY-LearningNotes/p/14286632.html