Java程序的生命周期是怎样的?代码举例讲解

Java程序的生命周期包括:编译期、加载期、运行期和结束期4个阶段。

  1. 编译期:将Java源文件编译成字节码文件(.class文件)的过程。编译器(javac)将校验源代码的语法和语义,并翻译成字节码。
  2. 加载期:虚拟机加载字节码文件,生成Class对象的过程。它包括加载、验证、准备和解析4个步骤。
    • 加载:读取字节码文件,生成Class对象。
    • 验证:校验字节码文件是否符合JVM规范。
    • 准备:为类变量分配内存空间,并设置默认初始值。
    • 解析:将类中的符号引用(方法名、变量名)替换为直接引用。
  3. 运行期:运行Java程序逻辑,可以反复执行。它包括初始化阶段和使用阶段两个阶段。
    • 初始化:给类变量赋予开发者定义的初始值。只执行一次。
    • 使用:执行方法调用,访问变量等程序逻辑。可以反复执行。
  4. 结束期:JVM执行System.exit()方法或程序执行完毕,进行堆内存回收和清理工作的过程。

来看一个简单例子:

public class LifeCycleDemo {
    public static void main(String[] args) {
        // 编译期:javac LifeCycleDemo.java
        // 加载期:虚拟机加载LifeCycleDemo.class文件

        // 初始化阶段:给变量初始化
        int count = 0; 

        // 使用阶段:程序执行主逻辑
        for (int i = 0; i < 5; i++) {
            count++;
            System.out.println(count);
        }

        // 结束期:虚拟机调用GC回收内存资源
    }
}

可以看到Java程序从源码到运行都经历了完整的生命周期,这其中涉及Java的编译器、类加载器、垃圾回收器等机制的工作。
所以,理解Java程序的生命周期过程可以让我们更深入理解Java平台的工作机制,有助于我们定位和解决程序运行期出现的各种问题。