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方法