美文网首页
4. 弃用使用 finalize() 方法,及其替代方法

4. 弃用使用 finalize() 方法,及其替代方法

作者: 42cc8919e42f | 来源:发表于2019-03-14 02:23 被阅读0次

    从 Java 9 开始,Object.finalize() 方法被标记为 deprecated。

    原因

    早在 Effective Java 第一版 中,作者就已经警告要避免依赖该方法。
    一方面我们没办法知道对象在 F-Queue 中的顺序,另一方面我们没办法控制 GC 发生的时间。所以大部分依赖该方法来释放资源的方式是及其危险的!
    要记住,一个对象如果已经被标记为该回收,那么该对象就不应被救活。

    使用该方法回收资源的替代方式

    使用 try-with-resources 代码块 和 AutoCloseable 接口来确保资源在代码块执行完毕之后被释放。

    更灵活的方法

    使用 PhantomReference 虚引用来实现在对象被回收时触发的动作。

    相关文章

      网友评论

          本文标题:4. 弃用使用 finalize() 方法,及其替代方法

          本文链接:https://www.haomeiwen.com/subject/umlfmqtx.html