Czy możemy wyłączyć finalizatory?

Ponieważ istnieje niewielka gwarancja, kiedy i nawet jeśli finalizatory są uruchomione i finalizatory są obecnie uważane za zapach - czy jest jakiś sposób na przekonanie JVM do całkowitego pominięcia wszystkich procesów finalizacji?

Pytam, ponieważ mamy gigantyczną aplikację, która po przeniesieniu do nowszej maszyny JVM (która nie jest pewna, która na tym etapie) zostaje rzucona na kolana przez to, co wygląda bardzo podobnie do znanych problemów z finalizatorami (wyrzucane wyjątki, a zatem bardzo wolne GC) .

Dodany

Trwają dyskusje na ten tematRozwiązywanie problemów z wyciekiem pamięci java: finalizacja? gdzie sugeruje się, że podstawowy problem pojawia się, gdy wyjątki są wyrzucane w finalizatorach, ponieważ dramatycznie spowalnia proces finalizacji.

Mój problem pokazuje dramatyczne spowolnienie, gdy pamięć staje się niska, a analiza zrzutów sterty wykazuje dużą liczbęFinalizer obiekty (ponad 10.000.000) - sugerując mi, że spowolnienie może być ich winą, ponieważ opóźniają GC. Oczywiście mogę się mylić.

Nie mam siły żądać refaktora.

questionAnswers(3)

yourAnswerToTheQuestion