Java虚拟机在执行.class文件时,Java虚拟机通过使用bootstrap类加载器创建初始类来启动,该初始类以依赖于实现的方式指定。然后,Java虚拟机链接初始类,初始化它,并调用公共类方法void main(String [])。调用此方法会驱动所有进一步的执行。 构成main方法的Java虚拟机指令的执行可能导致附加类和接口的链接(并因此创建),以及调用其他方法。在Java虚拟机的实现中,初始类可以作为命令行参数提供。 或者,该实现可以提供初始类,该类设置类加载器,该类加载器又加载应用程序。 初始类的其他选择是可能的,只要它们与前一段中给出的规范一致即可。
类加载过程分3个阶段:
1. 加载:使用bootstrap类加载器加载*.class文件。
2. 链接
2.1 验证:验证加载的字节码是否是经过当前虚拟机的编译规则得到的。
2.2 准备:为静态字段赋默认值。并且对象不赋予实例。
2.3 解析:将符号引用变为直接引用。
3. 初始化:为字段赋初始值。