Java是否具有等效于.Net的GC.SuppressFinalize

在.Net中,只要显式处理对象,在dispose pattern中使用SuppressFinalize即可避免完成relatively high performance cost的终结。类似的成本也适用于Java,但似乎没有SuppressFinalize。

我知道通常最好完全避免使用终结器,但我认为我不能在特定的用例中避​​免使用终结器(取消标记,您可以添加仅在未首先取消另一个标记的情况下运行的处理程序,因此令牌由于其来源被收集而变得不朽,必须导致从链接令牌中删除条目,以免它们累积无限制的垃圾条目)。

在Java中是否有等效的SuppressFinalize?如果不是,是否可以使用可用的工具(例如ReferenceQueue)来近似?

最佳答案

Java没有本地的“ GC.SuppressFinalize”方法。但是IDiposable模式将对您解决此问题很有用。

当您知道不再需要某个物品时,可以手动处置它,或者
能够运行清理代码以安全地断开连接,关闭文件等。
能够使用终结器捕获未知何时应该清理对象的情况。

07-24 16:26