Утечка памяти в Java - PullRequest
       64

Утечка памяти в Java

0 голосов
/ 05 декабря 2018

У меня есть веб-сервер с утечками памяти.Внезапный всплеск использования старого поколения, а затем задержка серверных пиков.Когда я брал дамп кучи и анализировал с помощью вашего комплекта, он предлагал объекту финализатора, занимающему 100% памяти.Но я не могу понять, почему использование gc является высоким только в какой-то момент времени, и это не происходит регулярно (это происходит, скажем, раз в неделю).

Также я заметил, что на вашем комплекте есть кнопка«вычислить точный оставшийся размер», когда я использую этот объект финализатора не отображается в обновленном списке.

Я прилагаю скриншот вашего комплекта.

Также, если есть способ, я могу получить список всех классов, из которых финализатор появляется в дампе кучи.

Перед нажатием вычислить оставшийся размер

Before pressing calculate retained size

После нажатия рассчитать оставшийся размер:

after pressing calculate retained size

1 Ответ

0 голосов
/ 05 декабря 2018

Согласно Документы YourKit: список классов страница:

При открытии представления вместо точных размеров отображаются приблизительные сохраненные размеры, которые не могут быть немедленно рассчитаны.Точные размеры можно получить с помощью всплывающей подсказки «Рассчитать точные оставшиеся размеры» над столбцом «Оставшийся размер».Однако для большинства классов оценка очень близка к точному значению, поэтому почти нет необходимости выполнять расчет точного размера.

java.lang.ref.Finalizer создается объектами, переопределяющими метод Object.finalize(), поскольку онидолжны быть собраны в фоновом режиме.Лучше всего было бы проверить дамп кучи и выяснить, какой класс использует finalize().В идеале не следует зависеть от этого метода, поскольку его поведение обычно непредсказуемо.

Если вы часто используете GC только один раз в неделю, попробуйте получить журналы GC или записать поведение JVM с помощью FlightRecorder.Возможно, вы останавливаете мир полным циклом ГК только раз в неделю?Невозможно сказать, не видя журналы и конфигурацию JVM.

...