目录
finalize介绍
1. 当对象被回收时, 系统自动调用该对象的finalize方法,子类可以重写该方法,用于对资源的释放的操作。
2. 什么时候被回收: 当某个对象没有任何引用时, 则JVM就认为这个对象是一个垃圾对象,则会使用垃圾回收机制来销毁该对象,在销毁对象前,调用的就是finalize方法。
3. 垃圾回收机制的调用, 由系统决定,也可以通过System.gc()来主动出发垃圾回收机制。
重写finalize
finalize默认是Object的方法,在子类中往往重写该方法。
代码演示
1. 设置red = null, 此时引用为空,则之前定义的new PigColor不需要在使用。我们认为它是垃圾。垃圾回收期需要回收。
2. 回收该对象时候,会调用finalize.
package org.example;
/**
* author 大力pig
*/
public class TestFinalize {
public static void main(String[] args) {
PigColor red = new PigColor("red");
red = null; //
System.gc();
System.out.println("结束");
}
}
class PigColor{
private String color;
public PigColor(String color) {
this.color = color;
}
@Override
protected void finalize() throws Throwable{
System.out.println("销毁Pig color:" + color);
}
}