黄页网站怎么做 获取企业信息,毕业设计网站用什么做,深圳卓越城蔚蓝铂樾府,学网站开发c目录 一、Android 虚拟机 dalvik/art#xff08;6版本后#xff09;二、Android dex、odex、oat、vdex、art区别 一、Android 虚拟机 dalvik/art#xff08;6版本后#xff09;
每个应用都在其自己的进程中运行#xff0c;都有自己的虚拟机实例。ART通过执行DEX文件可在设… 目录 一、Android 虚拟机 dalvik/art6版本后二、Android dex、odex、oat、vdex、art区别 一、Android 虚拟机 dalvik/art6版本后
每个应用都在其自己的进程中运行都有自己的虚拟机实例。ART通过执行DEX文件可在设备运行多个虚拟机DEX文件是一种专为Android设计的字节码格式文件经过优化使用内存很少。 ART主要功能包括预先(AOT)和即时(JIT)编译优化的垃圾回收(GC)以及调试相关的支持。
Android 6.0系统采用的art虚拟机所有的Java进程都运行在art之上当应用发生ANR(Application Not Response其中最终的一个环节便是向目标进程发送信号SIGNAL_QUIT, 传统的linux则是终止程序并输出core;而对于Android进程来说当收到SIGQUIT时Java层面的进程都是跑在虚拟机之上的ART虚拟机会捕获该信号并输出相应的traces信息保存到录/data/anr/traces.txt。
二、Android dex、odex、oat、vdex、art区别
1.dex java程序编译成class后dx工具将所有class文件合成一个dex文件dex文件是jar文件大小的50%左右.
2.odexAndroid5.0之前全称Optimized DEX;即优化过的DEX. Android5.0之前APP在安装时会进行验证和优化为了校验代码合法性及优化代码执行速度验证和优化后会产生ODEX文件运行Apk的时候直接加载ODEX避免重复验证和优化加快了Apk的响应时间. 注意优化会根据不同设备上Dalvik虚拟机版本、Framework库的不同等因素而不同在一台设备上被优化过的ODEX文件拷贝到另一台设备上不一定能够运行。
3.oatAndroid5.0之后 oat是ART虚拟机运行的文件,是ELF格式二进制文件,包含DEX和编译的本地机器指令,oat文件包含DEX文件因此比ODEX文件占用空间更大。 Android5.0以后在编译的时候(此处指系统预制app如果通过adb install或者商店安装在安装时dex2oat把dex编译为odex的ELF格式文件)dex2oat默认会把classes.dex翻译成本地机器指令生成ELF格式的OAT文件ART加载OAT文件后不需要经过处理就可以直接运行它在编译时就从字节码装换成机器码了因此运行速度更快。不过android5.0之后oat文件还是以.odex后缀结尾,但是已经不是android5.0之前的文件格式而是ELF格式封装的本地机器码. 可以认为oat在dex上加了一层壳可以从oat里提取出dex.
4.vdex Android8.0以后加入的,包含APK的未压缩DEX代码另外还有一些旨在加快验证速度的元数据。
5.art (optional) 包含APK中列出的某些字符串和类的ART内部表示用于加快应用启动速度。
注意Android5.0以后在data/dalvik-cache目录下的.dex文件已经不是android5.0之前的dex文件它是ELF文件,可以使用file命令查看如下