Daily Reading for Android Security -- dalvik JVM

dalvik 和jvm的差异

DalvikJvm
字节码Dalvik字节码java字节码
体积较小
虚拟机架构寄存器架构栈架构

栈架构:

​ 利用栈来保留java方法得活动记录(activation record) , 以帧为单位保留线程 得运行状态(变量区,求值栈)。

寄存器架构:

​ 利用栈来维护一个寄存器列表,执行更高效。

两者间差异参见:
https://blog.csdn.net/chunqingtai2922/article/details/101029641

DVM执行流程

​ linux内核 —— init进程(读取init.rc)—— 启动zygote ——初始化Dalvik虚拟机 —— 启动system-server

​ 启动一个应用程序时

​ 应用程序(Binder IPC 发送执行请求)—— system-server(socket IPC) —— Zygote (fork 新进程将控制权交给Dalvik ) —— dalvik虚拟机

​ Dalvik loadFromDex装载类,dvmVertifyCodeFlow校验载入的代码。FindClass 查找Main ,dvmInterpret 初始化解释器并执行字节流。

执行方式

JIT

©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页