2024-11-04 01:37:17
在前面详细介绍了虚拟机的各个组件后,我们通过一个实际案例来探讨其运行过程。当虚拟机通过调用某个类的main方法启动,这个过程通常会接收一个字符串数组参数,如在程序:
public class HelloApp {
public static void main(String[] args){
System.out.println("Hello World!");
for (int i = 0; i < args.length; i++ ) {
System.out.println(args);
}
}
}
编译后,在命令行输入:java HelloApp run virtual machine,虚拟机会尝试通过调用HelloApp的main方法启动。在运行时,虚拟机会首先检查是否已装载HelloApp类,如果没有,它会尝试通过ClassLoader查找。如果查找失败,将抛出异常。类被装载后,需要经历链接和初始化的过程。
链接分为三个步骤:检验、准备和解析。检验检查类的符号和语义是否正确;准备阶段会创建类或接口的静态域,并设置默认值;解析则是确保类对其他类或接口的引用是有效的,这一步是可以选择性执行的。紧接着是类的初始化,包括执行类中声明的静态初始化函数和静态域的初始化构造方法。在整个过程中,一个类的初始化必须在其父类初始化之后完成。
这个过程可以总结为:首先查找并装载类,然后进行链接和初始化,确保类的正确性和完整性,最后执行静态部分的初始化操作,确保程序的正确运行。
Java虚拟机(Java Virtual Machine) 简称JVM Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。