Object.finalize()会被垃圾收集器调用,当垃圾收集器认定这个对象没有被引用时。
但是无法绝对保证这个方法会在最后一个引用删除时即刻调用。
实际会有几毫秒到几分钟的延迟。
所以当一些对象使用的系统资源需要处理时,最好不要通过这个异步的机制来处理它们。
如下代码演示了这个规则:
public class MyClass {
protected void finalize() {
releaseSomeResources(); // Non-Compliant
}
}