0%

ART

编译dex字节码为机器码

虚拟机的创建

  • AndroidRuntime.cpp
    • start
    • jni_invocation.Init(NULL) 加载libart.so ,获取虚拟机函数符号
    • startVm ->创建Runtime,给JavaVM和JNIEnv赋值
    • JNI_CreateJavaVM
      • Runtime::Create(options, ignore_unrecognized)
      • runtime->Start()

        虚拟机的启动

        dex2oat

        解释执行和JIT

        JNI

        CheckPoints,线程同步,信号处理

        内存分配与释放

        GC