首页 > 开源项目 > OpenJdk1.8笔记——java启动流程
2020
09-22

OpenJdk1.8笔记——java启动流程

本文记录openjdk1.8 启动过程流程梳理。

Jdk中java的入口函数文件为openjdk\jdk\src\share\bin\main.c中的main方法(window上为WinMain),然后调用jdk8u-dev/jdk/src/share/bin/java.c的JLI_Launch方法,启动一个jvm虚拟机;

程序入口

作用:程序入口
位置:openjdk\jdk\src\share\bin\main.c

OpenJdk1.8笔记——java启动流程 - 第1张  | 乐生活

JLI_Launch

作用:java入口函数,解析参数、创建环境、加载jvm动态库
位置:jdk8u-dev/jdk/src/share/bin/java.c

OpenJdk1.8笔记——java启动流程 - 第2张  | 乐生活

JVMInit

作用:执行虚拟机入口函数
位置:jdk8u-dev/jdk/src/solaris/bin/java_md_solinux.c

OpenJdk1.8笔记——java启动流程 - 第3张  | 乐生活

 ContinueInNewThread

作用:组织参数,执行真正的虚拟机入口函数
位置:jdk8u-dev/jdk/src/share/bin/java.c

OpenJdk1.8笔记——java启动流程 - 第4张  | 乐生活

ContinueInNewThread0

作用:尝试创建新线程执行代码逻辑,创建新线程失败则在当前线程执行代码逻辑
位置:jdk8u-dev/jdk/src/solaris/bin/java_md_solinux.c

OpenJdk1.8笔记——java启动流程 - 第5张  | 乐生活

 JavaMain

作用:虚拟机的入口函数
位置:jdk8u-dev/jdk/src/share/bin/java.c

OpenJdk1.8笔记——java启动流程 - 第6张  | 乐生活

InitializeJVM

作用:通过libvm.so导出的函数创建虚拟机并和JNIEnv绑定

位置:jdk8u-dev/jdk/src/share/bin/java.c

OpenJdk1.8笔记——java启动流程 - 第7张  | 乐生活

JNI_CreateJavaVM

作用:创建java虚拟机
位置:jdk8u-dev/hotspot/src/share/vm/prims/jni.cpp

OpenJdk1.8笔记——java启动流程 - 第8张  | 乐生活

Threads::create_vm

作用:hotspot创建java虚拟机函数
位置:jdk8u-dev/hotspot/src/share/vm/runtime/thread.cpp

OpenJdk1.8笔记——java启动流程 - 第9张  | 乐生活

OpenJdk1.8笔记——java启动流程 - 第10张  | 乐生活

最后编辑:
作者:lehoon
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。