当前位置:首页 > 虚拟机 > 正文

java 虚拟机是如何运行的(java虚拟机的原理)


一、java虚拟机的运行过程上面详细解释了虚拟机的各个组件。虚拟机启动时会调用特定类的main方法,向main传递一个字符串数组参数,从而加载指定的类,并连接并初始化该类使用的其他类型。例如,对于程序:
publicclassHelloApp{
publicstaticvoidmain(String[]args){
n("HelloWorld!");
for(inti=0);i<;i++){
n(args);
}
}
}
编译后,在命令行中输入mode:javaHelloApprunvirtualmachine
通过调用main的HelloUp方法来初始化Java虚拟机,并将包含三个字符串“run”、“virtual”和“machine”的数组传递给main。我们现在描述虚拟机在运行HelloApp时可以采取的步骤。
我开始尝试执行helloapp类的main方法,并意识到该类没有加载,这意味着虚拟机当前不包含该类的二进制表示,因此虚拟机使用了ClassLoader。尝试找到这样的二进制代表。如果这个过程失败,就会抛出异常。在类加载后、调用main方法之前,HelloApp类必须绑定其他类型,然后进行初始化。链接涉及三个阶段:调查、准备和分析。验证步骤检查已加载核心的符号和定义。类初始化是类中声明的静态字段的静态初始化函数和构造函数实现。在启动类之前,必须先初始化父类。整个流程如下。