openjdk源码==类加载过程
jdk\src\share\bin\main.c
main
JLI_Launch
jdk\src\share\bin\java.c JLI_Launch
jdk\src\solaris\bin\java_md_solinux.c
JVMInit
ContinueInNewThread
JavaMain
InitializeJVM
jdk\src\share\bin\java.h
CreateJavaVM
调用JNI
hotspot\src\share\vm\prims\jni.cpp
JNICALL JNI_CreateJavaVM(
hotspot\src\share\vm\runtime\thread.cpp
jint Threads::create_vm
hotspot\src\share\vm\runtime\init.cpp
init_globals
classLoader_init(); //读取JDK自己的rt.jar中class的地址并保存地址
universe2_init();//从上面的地址中加载解析JDK自己的class文件到内存
hotspot\src\share\vm\memory\universe.cpp
universe2_init()
void Universe::genesis(TRAPS) {
SystemDictionary::initialize(CHECK);
hotspot\src\share\vm\classfile\systemDictionary.cpp
void SystemDictionary::initialize(TRAPS) {
initialize_preloaded_classes(CHECK);
initialize_wk_klasses_until(jsr292_group_start, scan, CHECK);
k = load_instance_class(name, class_loader, THREAD);
k = ClassLoader::load_classfile(class_name, CHECK_(nh));
===================
HotSpot源码篇-执行main方法 - 简书