【发布时间】:2017-12-11 23:16:41
【问题描述】:
Object.finalize() 在 Java 9 中已被弃用,我想我理解其中的原因,但我无法找到如何替换它。
我有一个名为 Configuration 的实用程序类,它本质上只有一个实例,它拥有应用程序中的所有内容并在应用程序期间持续存在。它提供的服务之一是记录:在第一次请求记录消息时,会创建一个记录器(由于各种遗留原因,它是我自己的记录器而不是标准记录器),并在配置对象的字段中保存一个引用,并且在应用程序终止时,无论是正常还是异常,我都想释放记录器持有的任何资源(这是一个黑匣子,因为我的库的用户可以提供他们自己的实现)。
目前这是通过调用logger.close() 的Configuration.finalize() 方法实现的。
我应该怎么做?
【问题讨论】:
-
由于应用程序终止时没有发生最终确定,因此您的旧方法从未奏效,而您却没有意识到。那么你确定你需要这种清理吗?
标签: java garbage-collection java-9 finalizer