Работает ли FlightRecorder на профиле JavaSE 8 Embedded 8 compact2?

Я использую профиль JavaSE Embedded 8 compact 2 на встроенной платформе (например, Rasp Pi). Я выбираю компактный профиль 2, чтобы иметь как можно меньшую площадь.

В целях разработки я хочу выполнить профилирование, не меняя профиль во время выполнения (как часть ОС во флэш-памяти). JavaSE Embedded 8 включает в себя регистратор полетов для профилирования в качестве действительно крутого и полезного инструмента. Но: для этого требуется профиль FullJRE.

На странице Oracle по адресу http://www.oracle.com/technetwork/java/embedded/resources/tech/java-flight-rec-on-java-se-emb-8-2158734.html говорится:

Note that JFR is available with Java SE Embedded 8 Full JRE, not with the Compact Profiles.  

Есть ли техническая возможность заставить это работать на профиле compact 2? Например, создавая настроенную версию JVM, которая включает в себя дополнения от регистратора полета? Или нужны собственные компоненты, которые есть только в виртуальных машинах FullJRE?

Обновление: тем временем я нашел сообщение от Джима Коннора с заявлением о сжатых профилях. См. https://blogs.oracle.com/jtc/entry/using_java_fligt_recorder_with. Джим подробно описывает, как запустить регистратор на компактном профиле. Поскольку регистратор полета зависит от javax.management, он считает, что работа на компактном профиле 1/2 не работает без существенных изменений.

1 ответ

Компактный профиль 2 не содержит JMX-функциональности, и большая часть реализации, например диагностические команды JFR, построена поверх MBeans в JDK 7/8. Поэтому невозможно использовать Flight Recorder на компактном 1/2.

JDK 9 уже выпущен, и единственный необходимый вам модуль - это jdk.jfr.

Вы можете создать собственный JDK, используя инструмент jlink:

cd JDK9_HOME/bin/

jlink --module-path ../jmods --add-modules jdk.jfr --output ../../jfrjdk

cd ../../jfrjdk/bin
java -XX:+UnlockCommercialFeatures -XX:StartFlightRecording -version

Если вы хотите получить доступ к JFR удаленно, то есть из Java Mission Control, используйте модуль jdk.management.jfr. Обратите внимание, что это потянет в JMX, поэтому изображение будет больше.

Другие вопросы по тегам