Können wir die Finalizer ausschalten?

Da es kaum eine Garantie dafür gibt, wann und selbst wenn Finalizer ausgeführt werden und Finalizer heutzutage fast als Geruch gelten, gibt es eine Möglichkeit, die JVM davon zu überzeugen, alle Finalisierungsprozesse vollständig zu überspringen?

Ich frage, weil wir eine Mammutanwendung haben, die, wenn sie auf eine neuere JVM verschoben wird (nicht sicher, welche in diesem Stadium), durch die bekannten Probleme mit Finalisierern in die Knie gezwungen wird (Ausnahmen werden geworfen und daher sehr langsame GC). .

Hinzugefügt

Es gibt einige Diskussionen überFehlerbehebung bei einem Java-Speicherverlust: Finalisierung? Hierbei wird vermutet, dass das Hauptproblem auftritt, wenn Ausnahmen in Finalizern ausgelöst werden, da dies den Finalisierungsprozess drastisch verlangsamt.

Mein Problem zeigt sich als dramatische Verlangsamung, wenn der Arbeitsspeicher knapp wird und die Analyse von Heap-Dumps eine große Anzahl vonFinalizer Objekte (über 10.000.000) - deuten darauf hin, dass die Verlangsamung ihre Schuld sein könnte, weil sie den GC verzögern. Offensichtlich kann ich mich irren.

Ich kann keinen Refactor verlangen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage