首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

 JLI_Launch

作用:java入口函数,解析参数、创建环境、加载jvm动态库

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

 JVMInit

作用:执行虚拟机入口函数

位置:jdk8u-dev/jdk/src/solaris/bin/java_md_solinux.c

  ContinueInNewThread

作用:组织参数,执行真正的虚拟机入口函数

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

 ContinueInNewThread0

作用:尝试创建新线程执行代码逻辑,创建新线程失败则在当前线程执行代码逻辑

位置:jdk8u-dev/jdk/src/solaris/bin/java_md_solinux.c

 JavaMain

作用:虚拟机的入口函数

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

 InitializeJVM

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

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

 JNI_CreateJavaVM

作用:创建java虚拟机

位置:jdk8u-dev/hotspot/src/share/vm/prims/jni.cpp

 Threads::create_vm

作用:hotspot创建java虚拟机函数

位置:jdk8u-dev/hotspot/src/share/vm/runtime/thread.cpp

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200922A0B33O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券