由于无法保证何时以及是否运行终结器,并且现在终结器几乎被认为是一种不良实践 - 是否有任何方法说服JVM完全跳过所有终结器处理过程?
我之所以提出这个问题,是因为我们有一个庞大的应用程序,当将其移动到更新的JVM(目前不确定是哪个版本)时,会因看起来非常像终结器已知问题(抛出异常,因此GC变得非常缓慢)而瘫痪。
添加
有关排除Java内存泄漏:终结器?的讨论中,建议主要问题是在终结器中抛出异常,因为那会显着减慢终结器处理过程。
当内存较低且堆转储分析显示大量Finalizer
对象(超过10,000,000)时,我的问题表现为显着减速 - 这使我认为可能是它们的原因导致了减速,因为它们正在延迟GC。 当然,我可能是错误的。
我没有权力要求进行重构。