package object_;
//对象被回收的时候,系统自动调用finalize方法(子类可以重写该方法,做一些资源回收的操作)
//可以重写finalize方法,完成一些需要的功能(例如释放资源)【不重写的话就默认调用Object类的这个方法】
public class finalize {
public static void main(String[] args) {
Car car = new Car("小车");
car = null;//上一行代码car指向了堆里面的一个空间,这行指向空,这时就是个垃圾(会被回收【finalize】)
System.out.println("ok");
}
}
class Car{
private String name;
public Car(String name) {
this.name = name;
}
//重写finalize
@Override
protected void finalize() throws Throwable {
// super.finalize(); [默认调用父类的finalize方法]
System.out.println(name+"被回收");
}
}
为啥重写的finalize方法里面的内容没有被输出?
不是只要一个对象成为垃圾就立马被回收(finalize有它自己的一套算法)