MST

星途 面试题库

面试题:Java中对象生命周期的主要阶段有哪些

请简述Java中对象从创建到被销毁所经历的主要阶段,并说明每个阶段的特点及可能涉及的操作。
43.7万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 创建阶段
    • 特点:为对象分配内存空间,初始化对象的成员变量为默认值,并调用构造函数。
    • 涉及操作:使用new关键字来实例化对象,例如MyClass obj = new MyClass();。构造函数用于执行对象的初始化逻辑,如给成员变量赋予初始值等。
  2. 使用阶段
    • 特点:对象处于可操作状态,可以调用对象的方法,访问和修改对象的成员变量。
    • 涉及操作:通过对象引用调用方法,如obj.someMethod();,也可以访问和修改成员变量,如obj.someVariable = value;
  3. 不可达阶段
    • 特点:对象不再被任何活跃的引用所指向,从应用程序的角度来看,该对象已无法访问。
    • 涉及操作:当对象的所有引用都被释放(如将引用变量赋值为null),对象进入不可达状态。此时,垃圾回收器开始关注该对象,但并不立即回收。
  4. 垃圾回收阶段
    • 特点:垃圾回收器检测到对象不可达后,回收该对象占用的内存空间。
    • 涉及操作:垃圾回收器在合适的时机(如内存不足等情况)运行,自动释放不可达对象的内存。在Java中,程序员无法精确控制垃圾回收的时机,但可以通过调用System.gc()来建议垃圾回收器运行,但这只是建议,不一定会立即执行。
  5. 终结阶段
    • 特点:在对象被垃圾回收之前,会调用对象的finalize()方法(如果该对象重写了此方法),提供对象最后一次清理资源(如关闭文件、释放数据库连接等)的机会。
    • 涉及操作:重写finalize()方法来实现资源清理逻辑,例如:
protected void finalize() throws Throwable {
    // 清理资源的代码,如关闭文件等
    super.finalize();
}

不过需要注意,finalize()方法不保证一定会被调用,且由于其运行在垃圾回收线程中,可能导致性能问题,所以Java 9开始已标记为过时。 6. 销毁阶段: - 特点:对象占用的内存被完全释放,对象从内存中消失。 - 涉及操作:垃圾回收器完成对象内存的回收,对象彻底销毁,内存空间可被重新分配使用。