Как включить метрики кучи для JFR через командную строку
Я пытаюсь запустить Java Flight Recorder, используя двоичный файл jcmd, расположенный /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/jcmd (Mac OS X). Есть ли опция командной строки для включения метрик кучи, которая соответствует опции статистики кучи в пользовательском интерфейсе Начать запись полета:
2 ответа
Для включения статистики кучи нет командной строки или опции jcmd
Событие отключено как в файле настроек по умолчанию, так и в файле настроек профиля, так как оно создает безопасную точку при итерации по куче.
Однако вы можете использовать менеджер шаблонов в JMC, Windows -> Template Manager. и проверьте настройки, которые вы хотите иметь, т.е. статистику кучи, и экспортируйте файл. Затем используйте jcmd, чтобы применить его
jcmd <pid> JFR.start settings=my-configuration-file.jfc
Если вы пытаетесь диагностировать утечку памяти, может быть интересно узнать, что Oracle JDK 10+ и OpenJDK 11+ записывают событие Old Object Sample, которое собирает информацию, которая обычно более полезна для решения утечек памяти Java (и без безопасной точки накладные расходы). Более поздние JDK имеют параметр path-to-gc-root =true (для jcmd и -XX:StartFlightRecording), который может предоставить дополнительную информацию для устранения утечек памяти. Однако этот вариант будет вызывать такие же издержки, что и статистика кучи, но намного меньше, чем дамп HPROF, так как на диск записывается меньше данных.
Запуск jcmd с
settings=profile
заставляет запись включать информацию о распределениях. Это не совсем соответствует статистике кучи, как указывалось в другом комментарии, но позволяет вам видеть графики пламени распределения в JMC, что я и искал здесь. См. https://docs.oracle.com/javacomponents/jmc-5-5/jfr-command-reference/diagnostic-command-reference.htm#resourceid-15322-48C8362A .
У меня были проблемы с экспортом шаблонов, как и в другом комментарии. Если вам нужна статистика кучи, вы можете скопировать
profile.jfc
и включите его, как описано в /questions/49297837/kak-vklyuchit-statistiku-obektov-v-jfr/49297845#49297845