我想了解进入 JVM 的要点。在做了我的研究之后,我了解到JNI_CreateJavaVM
(至少在 HotSpot JVM 中)是调用它来启动JVM的方法。
我现在的问题是谁调用JNI_CreateJavaVM
方法?我试着在JDK7 Hotspot查看JDK源代码。但它不是很清楚,我无法找到任何“int main
”方法。
假设我创建了一个简单的java程序并将其编译为Hello.java
。现在,当我从命令行运行“java Hello
”时,究竟发生了什么?第一个叫做的方法是什么?
答案:@apangin绝对指出了我正确的方向(见下面的评论)。主要方法位于main method for java launcher。从那里它调用最终调用JNI_CreateJavaVM方法的JLI_launch。
答案 0 :(得分:0)
java(java.exe)是启动程序 - 用C编写的小程序 The sources位于JDK存储库中,而不是HotSpot。
Java启动程序首先找到已安装的JRE,通过JNI_CreateJavaVM
创建新虚拟机,使用JNI搜索main
方法,最后使用JNI CallStaticVoidMethod
函数调用此方法。 / p>