Профиль кучи управления полетом Java
Я играю с новым Java Mission Control Profiler, который поставляется с Java 7u40, и я не могу сделать это для распределения профилей и сбора статистики объектов. Независимо от того, что я делаю, я не вижу никакой статистики в окне Память -> Статистика объекта.
Следующая команда запускает коллекцию:
jcmd <pid> JFR.start duration=60s settings=profile filename=alloc-prof.jfr
В документации Java Mission Control не упоминаются какие-либо конкретные опции для включения профилирования объектов. Я попытался создать свой собственный профиль и установить:
<flag name="heap-statistics-enabled" label="Heap Statistics">true</flag>
<flag name="allocation-profiling-enabled" label="Allocation Profiling">true</flag>
Но по-прежнему никакая статистика объекта не собирается.
1 ответ
Используйте менеджер шаблонов, который доступен в Mission Control.
Перейдите в Windows -> Диспетчер шаблонов и импортируйте шаблон, проверьте статистику кучи и профилирование распределения, экспортируйте его. Готово!
Если вы хотите редактировать jfc-файл вручную, полезно знать, что элементы внутри элемента управления не читаются JVM, то есть flag-element. Они используются JMC для изменения параметров вне элемента управления (один с атрибутом управления)
Ручное редактирование требует, чтобы вы изменили это:
установите java/object_alloc_in_new_TLAB в значение true
установите для java/object_alloc_outside_TLAB значение true
установите для vm/gc/details /object_count значение true
Обратите внимание, что есть два события подсчета объектов, с object_count_after_gc вы увеличите время GC. Если вы выберете тот, что указан выше, вы получите один дополнительный сборщик мусора за каждый блок записи (чего обычно достаточно)