Я знаю, что финализаторы в Java имеют серьезные проблемы с производительностью — подробности см. в этой ветке: ">Почему финализаторы сильно снижают производительность?
Теперь у меня есть сценарий, в котором я хочу запретить подклассам определенного класса иметь финализаторы. AfaIk, это можно сделать, добавив финальный пустой финализатор:
protected final void finalize() throws Throwable {}
Будет ли такой пустой финализатор уже вызывать известные проблемы с производительностью? Или сборщик мусора обнаружит его как пустой финализатор и обработает объекты как обычные нефинализируемые объекты?
Причиной этого является фреймворк, использующий собственный контролируемый процесс финализации. Пользователи, реализующие подклассы упомянутого класса, могут нарушить этот процесс, добавив свои собственные финализаторы Java. Кроме того, это заставит их использовать предполагаемый процесс завершения, если завершение вообще необходимо.