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

Java:空终结器也会影响性能吗?,java,performance,final,finalizer,Java,Performance,Final,Finalizer,我知道Java中的终结器存在严重的性能问题-有关详细信息,请参阅此线程: 现在我有一个场景,我想禁止某个类的子类使用终结器。好的,这可以通过添加一个最终的空终结器来完成: protected final void finalize() throws Throwable {} 这样一个空的终结器是否已经触发了已知的性能问题?或者GC会将其检测为空终结器,并将对象视为普通的不可终结对象吗 原因是一个框架使用自己的、受控的终结过程。实现上述类的子类的用户可以通过添加自己的Java终结器来打破

我知道Java中的终结器存在严重的性能问题-有关详细信息,请参阅此线程:

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

    protected final void finalize() throws Throwable {}
这样一个空的终结器是否已经触发了已知的性能问题?或者GC会将其检测为空终结器,并将对象视为普通的不可终结对象吗


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

不,空的最终确定器没有任何性能成本;它们得到了优化,因此终结器机制可以忽略它们。这意味着,并明确指出

幸运的是,如果finalize()方法很简单,也就是说,它的主体是空的,那么Finalizer机制会忽略它


测试并分享您的发现?性能问题?这是一种你不应该关心的纳米优化,除非你已经测量了你的应用程序,并且有证据表明终结器是原因。您的代码更有可能是性能问题的根源。您知道这只是严重影响垃圾收集器效率的一种方法,您需要通过在键盘上用力敲击来编程,以避免犯此错误。你真的想走这么远吗?你能说得更具体一点吗?如果禁止某些类的终结器,为什么会妨碍gc的效率?