Получите визуальный график использования памяти кучи в Java за определенный промежуток времени

В настоящее время я использую Visual VM для мониторинга использования памяти кучи моего приложения Java. Однако я хотел бы как-то увидеть использование памяти кучи в течение определенного промежутка времени, например, в течение дня, а не просто получить снимок. Мне бы хотелось оставить Visual VM или инструмент и позволить ему регистрировать использование памяти и то позже через один день я могу вернуться и посмотреть на график. Есть ли способ сделать это с помощью Visual VM? Если да, то как? Если нет, то какой инструмент я мог бы сделать для этого?

Ответ 1

Запустите программу Java со следующими параметрами Java:

-Xloggc:log.out -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

и загрузите HPjmeter для визуализации log.out.

Также см. веб-страницу SUN GC portal для получения дополнительных параметров для запуска. Поскольку данные записываются в файл, у вас не возникнет проблем со сбором данных за день или неделю. Конечно, если вы хотите визуализировать данные с большим количеством информации, вам нужно будет запустить HPjmeter с большим объемом памяти.

Другой вариант - использовать JConsole.

Ответ 2

Попробуйте вкладку "Память" в JConsole. JConsole также входит в состав Oracle JDK, например JVisualVM, поэтому вы уже должны иметь его. У него есть временной диапазон "все", который должен работать на то, что вы хотите сделать. Он будет выглядеть следующим образом:

screenshot of jconsole