Прошло много времени с тех пор, как мы в последний раз слышали об этой причудливой вещице, называемой Контроль полетов. Он прошел весь путь от JRockit и был переименован в Java Mission Control. Это одна из частей, которая буквально пережила стратегию конвергенции между HotSpot и JRockit. С сегодняшним обновлением Java SE 7 Update 40 вы можете использовать его снова.
Java Mission Control 5.2
Бывший JRockit Mission Control (JRMC) теперь называется Java Mission Control (JMC) и представляет собой набор инструментов, который включает в себя инструменты для мониторинга, управления, профилирования и устранения утечек памяти в вашем Java-приложении без дополнительных накладных расходов, обычно связанных с инструментами этот тип. До сегодняшнего дня версия 5.1 была доступна в загрузках Oracle HotSpot, которые могли быть получены только путем оплаты клиентов с веб-сайта поддержки Oracle. Сегодняшний выпуск является первым выпуском Java Mission Control, который поставляется вместе с Hotspot JDK! Проект конвергенции между JRockit и Hotspot достиг критической массы. С выпуском 7u40 Hotspot JDK в Hotspot имеется эквивалентное количество информации о регистраторе. И, наконец, это имеет смысл.Помимо сотен мелких исправлений и улучшений, теперь JMC-клиент собирается для работы на Eclipse 3.8.2 / 4.2.2, а также имеет новый JVM-браузер с серверными подносками. Это значительно облегчает отслеживание запущенных записей и JVM.
Java Flight Recorder (JFR)
Но основной и наиболее важной функцией является Flight Recorder. Функция записи полета работает с событиями. Эти события должны быть произведены базовой JVM. Hotspot достиг конвергенции событий с JRockit. Это означает, что наиболее полезная информация, которая была предоставлена от JRockit, теперь также доступна от Hotspot. И потому что это совершенно разные JVM; информация в некоторых случаях будет немного другой. Общие накладные расходы профилирования для ваших приложений по-прежнему остаются на уровне менее 2%. Обычно намного меньше. Что, учитывая информацию, которую вы получаете, почти ничего.
JFR с GlassFish 4
Давайте запачкаем руки и попробуем это с последней версией GlassFish. Сначала измените ваш glassfish4 \ glassfish \ config \ asenv.conf / .bat и добавьте AS_JAVA = PATH / TO / JDK7u40, теперь запустите домен и перейдите к параметрам JVM. Или в качестве альтернативы откройте glassfish4 \ glassfish \ domains \ domain1 \ config \ domain.xml и найдите соответствующий тег java-config и добавьте следующие два параметра jvm:
<jvm-options>-XX:+UnlockCommercialFeatures</jvm-options> <jvm-options>-XX:+FlightRecorder</jvm-options>
Теперь перезапустите домен и найдите jdk1.7.0_40 \ bin \ jmc и запустите его. Если вы работаете на той же машине, вы уже должны увидеть список доступных JVM в браузере JVM. Если развернуть узел GlassFish и дважды щелкнуть узел «MBean Server», вы получите хороший обзор того, что происходит сейчас:
Отсюда вы можете начать запись полета, щелкнув правой кнопкой мыши узел «Flight Recorder» в браузере JVM. Выберите желаемое время записи и настройки событий (которые теперь имеют новую функцию шаблона для предварительного выбора событий :)) и нажмите «Готово». После желаемого периода времени запись загружается в JMC, и вы можете просмотреть временную шкалу и найти узкие места.
Очень маленький недостаток в том, что вы не можете запустить его с GlassFish 3. В версии 4.0 исправлена ошибка, связанная с упорядочением jvm-параметров.
Что горячо?
Лучшее, что есть после нарезки породы, это то, что теперь у вас есть метод профилирования событий! С помощью метода профилирования событий вы можете узнать, где ваше приложение тратит больше всего времени на выполнение вашего Java-кода. Это, например, полезно для оптимизации приложения, в котором оптимизация действительно оказывает влияние.
Далее у вас есть улучшенная вкладка профилирования распределения. Теперь вы можете видеть распределение TLAB по трассировке и объекту, размещаемому непосредственно в старом пространстве. Эта «новая и улучшенная» тема продолжается во всех вкладках в регистраторе. Вы получаете File I / O, Socket I / O и многие другие, которые предоставляют множество идей.
Экспериментальные плагины
И самое приятное для меня в том, что команда продолжает работать с кучей экспериментальных плагинов. Был добавлен новый файл под названием JOverflow — анализ дампа кучи для отходов памяти. Этот плагин позволяет Mission Control выполнять анализ дампа кучи, в первую очередь, для поиска потерянного пространства кучи. JOverflow будет искать несколько различных шаблонов, таких как дублирующиеся строки, недостаточно используемые коллекции и т. Д. Этот плагин также добавляет действие (для локальных соединений), которое будет выполнять дамп кучи и затем визуализировать дамп кучи с помощью JOverflow. Это как-то краткосрочная замена Memleak Analyzer, которую вы, возможно, знаете из JRMC. Плагины D-Trace также подверглись капитальному ремонту. Вы можете узнать больше об этом в блоге Маркуса Хирта .
Вы можете загрузить последнюю версию 7u40 со страницы загрузки Oracle Technology Network
Java SE . Java Mission Control уже интегрирован, и вы готовы его запустить.
Если вам нужна дополнительная информация, посетите
oracle.com/missioncontrol, где вы можете найти ссылки на документацию и сайты обновлений Eclipse.