概念性知道Dalvik虚拟机基于JVM的改进机器对移动设备的好处
1 dex file format
几个class变为一个dex,constant pool常数共享.省内存
2 Zygote shared lib and heap
Zygote,copy-on-write shared(很少写),省内存,启动快。
一个进程开启一个dvm,有很强的独立性。
共享底层lib
读的内存数据共享
3 Register-based ISA
基于寄存器的bytecode,省指令,省cpu,省电
java vm基于栈,有很多push,pull动作。
4 Trace-Granularity JIT
Trace-based JIT,省内存,省CPU,省电
编译器优化。移动设备服务器上编译。
知道apk的结构
知道class,apk,dex和odex文件的关机,及转换工具,存放位置
dex文件在apk中。apk可以rename为zip解压缩。
AndroidManifest.xml,res(.png,.xml)
(aapt tool)
R.java
MyService.aidl
(aidl tool)
MyService.jva
.java android.jar
(javac compiler)
.class *.jar external JARs
(dx tool,源码/android/dalvik/dx/src:
DexFile.java add() toDex()toDex0())
classes.dex
(akpbuilder tool PackageManagerService.java scanPackageLI()
OptMain.c main())
MyApp.apk
adb shell位置:
C:\Android\android-sdk\platform-tools>adb shell
Dex在何方?如何生成?
dexter:dx jar/class to dex在Eclipse插件中,保证在apk中。
安装apk时,dexopt解压apk获得dex文件,存于dalvik-cache中,dexopt也可从apk或dex生成odex,存放与apk或jar文件同目录。
文档:/android/dalvik/docs/
Dalvik VM之所以能优化JVM,各项措施是基于啥前途或假设?什么情况下得不到想要的优化效果?(Jeopardize)
类似class中有一样的常量,优化才有效;
解压缩apk文件,观察其结构
system/app/
dexdump获取dex文件信息