DevilKing's blog

冷灯看剑,剑上几分功名?炉香无需计苍生,纵一穿烟逝,万丈云埋,孤阳还照古陵

0%

jvm的启动过程

原文链接

查看java.c

上面是一些关键的函数,比如RegisterThread()InitializeJVM(...)

就是LoadMainClass(),然后通过GetStaticMethodID,来执行main方法

InitializeJVM(...) ->CreateJavaVM(...)

可以看到,在JDK的源代码里面并没有CreateJavaVM(...)的具体实现,它只是一个接口定义,而由传入的InvocationFunctions来进行具体的定义

hotspot平台的定义

loadLibrary

bsd平台上,就是dl_open相应的filename

tips:

  • 采用grep -rn 'CreateJavaVM'的方式去查找相应的函数调用