Захват heapdump для приложения весенней загрузки

Я новичок в анализе кучи. Мы использовали весеннюю загрузку в нашем веб-приложении. В последнее время использование кучи стало слишком высоким. Чтобы проанализировать дамп кучи с помощью таких инструментов, как Mat и JProfiler, я загружаю его с помощью исполнительного механизма следующим образом:

http://localhost:8080/actuator/heapdump

Но каждый раз, когда я делаю дамп кучи, использование кучи становится низким. Я подозреваю, что все это время может быть сборщик мусора. Пожалуйста, исправьте, если я ошибаюсь. Поэтому я не могу уловить реальный сценарий. Есть ли способ получить дамп кучи без запуска GC? Или в любом случае, когда использование кучи увеличивается более, чем, скажем, 500 МБ, создается heapdump.


person Joy    schedule 05.04.2019    source источник


Ответы (1)


У вас может быть @Scheduled задача, чтобы регулярно использовать кучу и сгенерировать дамп кучи размером 500 МБ. Вы можете использовать ManagementFactory.getMemoryPoolMXBeans();, он показывает различные области кучи и их использование.

Чтобы сделать это внешне:

Вы можете использовать jstat для внешнего мониторинга использования кучи. Оберните его в сценарий, который будет анализировать jstat -gc, а затем использовать jmap для получения дампа кучи.

person Ali Ben Zarrouk    schedule 05.04.2019
comment
Это требует изменения кода в существующем пакете. Возможно ли это в любом случае без изменения кода, я имею в виду использование любого внешнего инструмента или чего-то еще? - person Joy; 05.04.2019
comment
Тогда вы можете использовать для этого jstat. запустить небольшой скрипт и контролировать ваше приложение, а затем использовать jmap для получения дампа кучи. Я обновил свой ответ этим. - person Ali Ben Zarrouk; 05.04.2019