日期:2014-05-18  浏览次数:20680 次

关于finalize()方法自动调用的测试.
Java   技术允许使用   finalize()   方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在   Object   类中定义的,因此所有的类都继承了它。子类覆盖   finalize()   方法以整理系统资源或者执行其他清理工作。finalize()   方法是在垃圾收集器删除对象之前对这个对象调用的.

现在我想测试下,什么时候被自动调用,谁能提供测试代码.
比如重写OBJECT的finalize(),在里边打出一条信息.谢谢.

------解决方案--------------------
finalize不保证一定会调用。

只有内存不足,必须发生GC时才会调用。如果在System.exit()之前没有发生GC,finalize就不会执行。
------解决方案--------------------
给你一段代码:

public class Foo {
public static void main(String[] args) {
new Foo();
System.gc();
}

protected void finalize() throws Throwable {
System.out.println( "finalize... ");
}
}

------解决方案--------------------
调用System.gc()

就可以
------解决方案--------------------
把你的解决方法说来与大家分享一下噻
------解决方案--------------------
up 一哈
------解决方案--------------------
学习一下