int dvmStartup(int argc,const char* const argv[],bool ignoreunrecognized,JNIEnv* pEnv){
int i,cc;
assert(gDvm.initializing);
LOGV("VM init args (%d):\n",argc);
for(i=0;i<argc;i++){}
setCommandLineDefaults();
if(!dvmPropertiesStartup(argc))
goto fail;
cc=dvmProcessOptions(argc,argv,ignoreunrecognized);
if(cc!=0)
{
if(cc<0)
dvmFprintf(setderr,"\n");
dvmusage("dalvikvm");
goto fail;
}
}
5.2 初始化跟踪显示系统 dvmAllocTrackerStartup(void);
5.3 初始化垃圾回收器 dvmGcStartup(void)
5.4 初始化线程列表和主线程环境参数
bool dvmThreadStartup(void) Thread* thread;
5.5 分配内部操作方法的表格内存 dvmInlineNativeStartup
5.6 初始化虚拟机的指令码相关内容 dvmVerificationStartup(void)
5.7 分配指令寄存器状态的内存 dvmRegisterMapStartup(void)
5.8 分配指令寄存器状态的内存 dvmInstanceofStartup(void)
5.9 初始化虚拟机最基本用的Java库
dvmClassStartup
5.10 进一步使用java类库线程类 dvmThreadobjectstartup初始化虚拟机进一步使用Java类库线程类。
5.11 初始化虚拟机使用的异常Java类库 dvmExceptionStartup初始化虚拟机使用的java类库
5.12 释放字符串哈希表 dvmstringInternStartup(void)
5.13 初始化本地方法库的表 dvmnativeStartup
5.14 初始化内部本地方法 dvmInternalNativeStartup初始化内部本地方法,建立哈希表,方便快速查找
5.15 初始化JNI调用表 dvmJniStartup初始化JNI调用表,以方便快速找到本地方法调用的入口。
5.16 缓存java类库里的反射类 dvmReflectStartup,调用dvmPrepMainForJni()准备主线程里的解释栈可以调用JNI方法
本文详细介绍了Dalvik虚拟机的启动过程,包括初始化跟踪显示系统、垃圾回收器、线程列表等关键步骤,并深入探讨了虚拟机指令码、内部操作方法表以及Java类库的初始化等内容。
2357

被折叠的 条评论
为什么被折叠?



