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

java虚拟机里的执行指令


一、哪种文件可以在java虚拟机中运行类文件。Java类文件、类文件路径打破了C或C++等语言所遵循的传统,当编译和链接C++程序时,生成的可执行二进制文件只能在指定的硬件平台和操作系统上运行,因为这个二进制文件。该文件包含目标处理器的机器语言。Java程序(类文件)不是本地可执行程序。运行Java程序时,首先运行JVM(Java虚拟机),它是在计算机上虚拟出一台计算机。它存在于计算机内存中,运行在操作系统上,然后将Java类加载到JVM中执行。。
二、java虚拟机的运行过程

上面详细解释了虚拟机的各个部分。我们通过一个具体的例子来分析一下它的持续过程。
虚拟机的启动是通过调用指定类的main方法,向main传递一个字符串数组参数,从而加载指定的类,并链接和初始化该类使用的其他类型。例如对于程序:
publicclassHelloApp{
publicstaticvoidmain(String[]args){
n("HelloWorld!");
for(inti=0;i<;i++){
n(args);
}
}
}
编译完成后,在命令行模式下输入:javaHelloApprunvirtualmachineJava虚拟机将通过调用HelloApp方法main来启动,并且包含三个字符串“run”,“virtual”和“machine”的数组将被传递给main。现在我们概述虚拟机在运行HelloApp时可以采取的步骤。
我开始尝试运行HelloApp类的main方法,发现该类还没有被加载,这意味着虚拟机当前不包含该类的二进制表示,因此虚拟机使用ClassLoader来尝试找到这样的二进制代表。如果此过程失败,则会引发异常。在类加载之后、调用main方法之前,HelloApp类必须连接其他类型,然后进行初始化。链接由三个阶段组成:检查、准备和解析。验证检查加载的主类的符号和语义。准备工作为类或接口创建静态字段并将这些字段初始化为默认值,这一步是可选的。类的初始化是执行类中声明的静态域的静态初始化函数和初始化构造函数。在初始化一个类前,必须先初始化其父类。整个流程如下: