本文共 1358 字,大约阅读时间需要 4 分钟。
Java 类的初始化与销毁机制是程序运行的重要组成部分,理解其工作原理对于优化程序性能至关重要。本文将从静态初始化、实例创建、类销毁等方面详细解析 Java 的类生命周期。
在 Java 中,静态初始化是类加载的关键环节。第一次加载类时,Java 虚拟机(JVM)会执行以下步骤:
例如,在 Parent 类中:
public static int t = parentStaticMethod2();{ System.out.println("父类非静态初始化块");}static{ System.out.println("父类静态初始化块");} 当 Parent 类被首次加载时,jvm 会执行父类的静态初始化块,并按顺序调用静态方法。
当使用 new 运算符创建类实例时,类的实例创建过程遵循以下顺序:
super())。this())。例如,Child 类继承 Parent 类:
{ System.out.println("子类非静态初始化块");} 当创建 Child 实例时,jvm 会先初始化 Parent 类的非静态部分,再初始化 Child 的非静态部分。
类实例销毁时,JVM 会执行以下步骤:
例如,Parent 类的 finalize() 方法:
@Overrideprotected void finalize() throws Throwable{ super.finalize(); System.out.println("销毁父类");} 当 Child 实例被销毁时,JVM 会先调用 Child 的 finalize(),再调用 Parent 的 finalize()。
通过 Test 类的 main 方法:
public static void main(String[] args){ Parent.parentStaticMethod2(); Child child = new Child();} 运行结果如下:
父类的静态方法2父类静态初始化块父类的静态方法2子类静态初始化块父类非静态初始化块父类的构造方法子类非静态初始化块子类的构造方法
这表明,类的初始化顺序是:
通过以上分析,可以清晰地看出 Java 类的生命周期及其初始化和销毁的具体过程。理解这些机制有助于优化程序性能,避免内存泄漏和资源浪费。
转载地址:http://wbof.baihongyu.com/