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

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

原因

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

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

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

更灵活的方法

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

你可能感兴趣的:(4. 弃用使用 finalize() 方法,及其替代方法)