Как профилировать Java-программу от начала до конца? - PullRequest
0 голосов
/ 17 октября 2018

У меня есть Java-программа, которая работает всего около 20-30 секунд, и я хочу ее профилировать.

Запускать профилировщик jvisualvm вручную при каждом запуске не надежно, потому что вы теряете несколько секунд, работая сПользовательский интерфейс.

Есть ли способ профилировать всю игру, как старый -Xhprof:cpu=samples, который больше не работает?

1 Ответ

0 голосов
/ 17 октября 2018

С помощью Flight Recorder вы можете добавить в командную строку

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder 
-XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,settings=profile

https://docs.oracle.com/javacomponents/jmc-5-5/jfr-runtime-guide/run.htm#JFRRT176

Он записывает только распределение памяти на новом TLAB, поэтому я делаю его намного меньше, чемпо умолчанию, чтобы получить больше образцов.

-XX:TLABSize=128k

Вам нужно запустить jmc из каталога $JAVA_HOME/bin, чтобы открыть созданный файл .jfr.

Мне сложнее использовать, чемVisualVM, но дает гораздо более подробные результаты с меньшим уровнем шума.то есть вы получаете гораздо меньше причин распределения самим профилировщиком.

...