对象的生命周期:
- 创建阶段:通过使用关键字new或其他方式,根据类的模板在堆内存中创建对象。在这个阶段,对象的实例变量被分配内存,并根据其类型设置默认初值。
- 初始化阶段:对象的构造函数被调用,对实例变量进行初始化。可以在构造函数中执行一些特定的初始化操作。
- 使用阶段:对象可以被使用,包括调用对象的方法、访问和修改实例变量等。
- 终结阶段:当对象不再被引用或程序结束时,Java虚拟机会在适当的时机对对象进行垃圾回收。在垃圾回收之前,对象的finalize()方法会被调用,可以在该方法中进行一些清理操作。
- 销毁阶段:对象被垃圾回收后,其占用的内存空间被释放,对象从内存中被删除。
需要注意的是,Java的垃圾回收机制负责管理对象的销毁,程序员通常无需手动销毁对象。垃圾回收器会自动检测不再被引用的对象,并回收其占用的内存空间。
类的生命周期:
- 加载(Loading):当程序需要使用一个类时,Java虚拟机会通过类加载器将类的字节码加载到内存中。加载过程包括查找类文件、验证字节码的正确性、分配内存等步骤。
- 链接(Linking):加载完成后,Java虚拟机会对类进行链接操作,包括验证、准备和解析。
- 验证(Verification):检查字节码的正确性和安全性,确保不会造成系统错误。
- 准备(Preparation):为类的静态变量分配内存,并设置默认初始值。
- 解析(Resolution):将类的符号引用解析为直接引用,以便在运行时可以直接访问到对应的方法或字段。
- 初始化(Initialization):在类的初始化阶段,会执行类构造器(也称为类的静态初始化块)中的代码,对静态变量进行初始化。类初始化时机包括:首次创建对象、首次访问静态变量、调用静态方法等。
- 使用(Usage):类加载完成并初始化后,可以通过创建对象、调用方法等方式使用类。