编程语言
首页 > 编程语言> > Java:空终结器也会对性能产生影响吗?

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

作者:互联网

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

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

    protected final void finalize() throws Throwable {}

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

原因是使用自己的受控终结过程的框架.实现上述类的子类的用户可以通过添加自己的Java终结器来破坏此过程.此外,如果需要完成,它将迫使他们使用预期的最终化过程.

解决方法:

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

Fortunately, when our finalize() method is trivial, that is, it has an empty body, it is ignored by the Finalizer mechanism

标签:finalizer,java,performance,final
来源: https://codeday.me/bug/20190830/1769368.html