В настоящее время я использую Visual VM для мониторинга использования памяти кучи моего приложения Java. Однако я хотел бы как-то увидеть использование памяти кучи в течение определенного промежутка времени, например, в течение дня, а не просто получить снимок. Мне бы хотелось оставить Visual VM или инструмент и позволить ему регистрировать использование памяти и то позже через один день я могу вернуться и посмотреть на график. Есть ли способ сделать это с помощью Visual VM? Если да, то как? Если нет, то какой инструмент я мог бы сделать для этого?
Получите визуальный график использования памяти кучи в Java за определенный промежуток времени
Ответ 1
Запустите программу Java со следующими параметрами Java:
-Xloggc:log.out -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
и загрузите HPjmeter для визуализации log.out
.
Также см. веб-страницу SUN GC portal для получения дополнительных параметров для запуска. Поскольку данные записываются в файл, у вас не возникнет проблем со сбором данных за день или неделю. Конечно, если вы хотите визуализировать данные с большим количеством информации, вам нужно будет запустить HPjmeter с большим объемом памяти.
Другой вариант - использовать JConsole.
Ответ 2
Попробуйте вкладку "Память" в JConsole. JConsole также входит в состав Oracle JDK, например JVisualVM, поэтому вы уже должны иметь его. У него есть временной диапазон "все", который должен работать на то, что вы хотите сделать. Он будет выглядеть следующим образом: