|

我们在系统对内存垃圾进行清理前,可以选择一种工具提前做一些清除工作。关于提前做一次清理工作的原因,这里涉及到了GC的问题。在对象可达的情况下,会有对象复活的出现,不然就会被回收。下面我们就finalize的概念、语法、参数、返回值及清理实例带来全面讲解。 1.概念 finalize()主要用于在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。 2.语法 protected void finalize() throws Throwable { }3.参数 无 4.返回值 没有返回值 5.实例 public class FinalizeTest {
static class Person {
String name;
@Override
protected void finalize() throws Throwable {
System.out.println("finalize " + name);
super.finalize();
}
}
public static void main(String[] args) {
Person p = new Person();
p.name = "ltt";
p = null; // 此后,p原先指向的Person对象会在某个时间被 gc 回收掉
System.gc(); // 建议 JVM 进行 gc 操作,但不一定会进行 gc 操作
System.runFinalization(); // 执行将要被销毁的对象的 finalize 方法
}
}?运行结果运行结果 finalize ltt 为了触发 gc行为,用了下面的代码: System.gc(); // 建议 JVM 进行 gc 操作,但不一定会进行 gc 操作
System.runFinalization(); // 执行将要被销毁的对象的 finalize 方法 以上就是finalize在java中的清理方法,在我们系统内容将要满时可以使用这种方法,不过这类情况出现的不多,所以finalize使用的次数也比较少。 |