7.避免使用终结方法

终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要使用它的。使用终结方法会导致行为不稳定,降低性能,以及可移植性的问题,不过终结方法也有其可用之处。

终结方法的坏处

  • 不能保证被及时执行
  • 非常严重的性能损失

终结方法的好处

  • 充当最后的安全网,但也并不是特别建议

建议
当我们需要手动结束一个对象的时候,显示的释放资源,比如InputStream 的 close方法

总结

总之除非是作为资源回收处理的第二道防线(安全网)或者是为了终结非关键的资源,否则请不要使用终结方法。如果没办法真的使用了finalize,别忘记了调用super.finalize()。还应考虑是否使用终结方法守卫者,使未调用super.finalize()方法的类的父类的终结方法也会被执行。

你可能感兴趣的:(7.避免使用终结方法)