Java 内存管理中的对象终结机制如何工作?
概述
Java 的垃圾回收器负责回收不再使用的对象,从而释放内存。对象终结机制是一种允许对象在被垃圾回收之前执行清理工作的机制。
方法
对象终结机制通过 finalize()
方法实现。当一个对象被标记为垃圾时,垃圾回收器会在调用 finalize()
方法之前尝试回收其所有非静态字段。如果 finalize()
方法抛出异常,垃圾回收器将终止回收过程。
实战案例
假设我们有一个 Person
类,它有一个 name
字段和一个 finalize()
方法:
public class Person {
private String name;
@Override
protected void finalize() {
System.out.println("释放资源: " + name);
}
}
在以下代码中,我们创建了一个 Person
对象,然后将其设置为 null
,使其有资格被垃圾回收:
Person person = new Person();
person.name = "John Doe";
person = null;
当垃圾回收器运行时,它会发现 person
对象不再被引用,并将其标记为垃圾。然后垃圾回收器会调用 finalize()
方法,它将打印以下行:
释放资源: John Doe