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

ste*_*ori 3 java performance final finalizer

我知道Java中的终结器存在严重的性能问题 - 请参阅此主题以获取详细信息:为什么终结器会产生"严重的性能损失"?

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

    protected final void finalize() throws Throwable {}
Run Code Online (Sandbox Code Playgroud)

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

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

res*_*man 5

不,空终结器没有任何性能成本; 它们得到优化,因此Finalizer机制可以忽略它们.这个链接意味着,并且这个明确说明了它.

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