- 应用挂的少,活得好,活得久
- Crash原因很多,具体表现就是OOM
- gc时所有线程停止,包括主线程的绘制也会被搁置,导致掉帧,也就是卡顿
- 特定机制清理后台进程
Dalvik
- ART基于Dalvik优化而来
- JVM基于栈(所需指令更多),Dalvik基于寄存器(指令紧凑简洁)
- Dalvik显示指定操作数,指令比栈的大,相对的指令数减少
- .java文件->javac编译器->.class文件 ->JVM读取(javaSE程序)
- .java文件->javac编译器->.class文件 ->dx工具->.dex文件->dexopt工具->优化后的Dalvik字节码.dex (Dalvik流程)
- 每个手机厂商可以设定设备每个进程使用Dalvik堆的大小,有三个值
- dalvik.vm.heapstartsize 堆分配的初始值大小,越小内存消耗越慢,越大越流畅,但是可运行的应用减少
- dalvik.vm.heapgrowthlimit 指定largeHeap的话,达到headpsize才会OOM,否则heapgrowlimit就会OOM
- dalvik.vm.heapsize 进程可用的堆内存最大值,申请超过,就OOM
Zygote
-
Dalvik又Zygote孵化器创建,它本身又是一个Dalvik VM进程
-
每个应用运行在一个Dlvik VM实例,每个VM运行在独立进程空间
-
预加载机制,不同应用可以共享相同类,JVM不存在,
-
与JVM两者不兼容
网友评论