openJdk文件数众多,在那先入手?我是从java.c开始,我采用的sourceInside阅读器,由于这是学习,本着能看懂多少是多少的态度,不必拘泥于各个细节,先从os/linux/laucher/java.c看起。
在java.c的main函数内调用LoadJavaVm,具体创建vm的函数为JNI_CreateJavaVM,其采用函数指针,而不采用直接调用,没看出来有什么好处,为什么多一个间接层?为了程序的可移植?在此先不管它。
JNI_CreateJavaVM函数内部创建虚拟机线程,由于程序考虑多系统的移植,故抽取了一个间接层Threads,在Threads.create_vm下面进行java虚拟机线程的初始化工作(init_globals())。线程的创建实现这类也是有意思的工作,以后有空的话再慢慢描述。在init_globals()之后,启动虚拟机线程,垃圾回收这些后台工作就开始了。
OpenJDK启动流程解析
本文探讨了OpenJDK的启动过程,从java.c文件的main函数入手,详细介绍了JNI_CreateJavaVM函数如何通过函数指针创建Java虚拟机,并解释了这一设计背后的考虑。随后深入分析了虚拟机线程的初始化工作。
392

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



