Java:空终结器也会对性能产生影响吗?

时间:2014-07-30 12:51:39

标签: java performance final finalizer

我知道Java中的终结器存在严重的性能问题 - 有关详细信息,请参阅此主题:Why do finalizers have a "severe performance penalty"?

现在我有一个场景,我想禁止某个类的子类使用终结器。 AfaIk,这可以通过添加最终的空终结器来完成:

    protected final void finalize() throws Throwable {}

这样一个空的终结器是否已经触发已知的性能问题?或者GC会将其检测为空终结器并将对象视为普通的非终结对象吗?

这是一个使用自己的受控终结过程的框架。实现上述类的子类的用户可以通过添加自己的Java终结器来破坏此过程。此外,如果需要最终确定,它将迫使他们使用预期的最终确定过程。

1 个答案:

答案 0 :(得分:5)

不,空终结器没有任何性能成本;它们得到优化,因此Finalizer机制可以忽略它们。 This link表示,this one明确说明了它。

  

幸运的是,当我们的finalize()方法很简单时,也就是说,它有一个空体,它会被终结器机制忽略