查看java.c
上面是一些关键的函数,比如RegisterThread()
和InitializeJVM(...)
就是LoadMainClass()
,然后通过GetStaticMethodID
,来执行main
方法
InitializeJVM(...)
->CreateJavaVM(...)
可以看到,在JDK的源代码里面并没有CreateJavaVM(...)
的具体实现,它只是一个接口定义,而由传入的InvocationFunctions
来进行具体的定义
hotspot平台的定义
bsd平台上,就是dl_open相应的filename
tips:
- 采用
grep -rn 'CreateJavaVM'
的方式去查找相应的函数调用