11 октября 2017-го в офисе компании Oracle состоялся мастер-класс Алексея Рагозина по Java Mission Control.
Java Flight Recorder — это подсистема Oracle JVM, которая позволяет собирать диагностическую информацию, минимально нагружая работающее приложение. Java Mission Control — графический инструмент, входящий в поставку Oracle JDK, позволяющий анализировать информацию, собранную Java Flight Recorder. Одно из применений Flight Recorder — поиск проблем производительности.
В рамках мастер-класса продемонстрированы приёмы поиска типовых проблем, таких как «горячие участки» кода, источники мусора и т.п., с использованием Mission Control / Flight Recorder.
Анонсы JUG.ru Group

[СПб, 25-26 октября] Joker

[29-30 октября, СПб] DevOops
JUG.ru (Java User Group)
JUG.ru (Java User Group) — это российское сообщество Java-разработчиков. Команда JUG.ru проводит открытые встречи в Санкт-Петербурге, собирающие до 200 человек.
Для обратной связи используйте Telegram-чат.
среда, 2 ноября 2016 г.
Профилируем Java приложения используя Java Mission Control
В этой статье я расскажу о том, что такое Java Mission Control и чем он может помочь.
Начиная с 7u40 в составе Oracle JDK появился GUI инструмент для реалтайм мониторинга и профилирования JVM. Он позволяет собрать очень много информации о JVM процессе, найти узкие места и проблемы, которые влияют на производительность.

С точки зрения пользователя, вы запускаете ваше Java приложение, включаете запись событий, ждете фиксированное время пока события записываются и затем проводите анализ собранных данных.
Mission Control включает в себя JMX консоль и Java Flight Recorder (JFR). С помощью JMX осуществяется взаимодействие с удаленным Java процессом, а JFR собирает данные о событиях.
По умолчанию JMX и JFR выключены в Oracle JVM. Для их включения при запуске вашего Java приложения добавьте следущие параметры:
Пример запуска JAR файла с этими параметрами:
После запуска приложения попробуем подключиться к нему с помощью JMC.
Запускаем GUI (набрать в консоле jmc ), создаем новое подкючение к JVM, указываем настройки подключения к удаленному серверу:

Включаем запись событий, указываем сколько времени будем собирать данные, одной минуты вполне дотаточно:

Если вы профилируете веб приложение, в момент записи событий имеет смысл нагрузить его HTTP запросами. Можно использовать в продакшене, т.к. запись событий почти не скажется на производительности самого приложения. Для примера я буду эмулировать нагрузку с помощью утилиты siege.
Ждем минуту и смотрим информацию о событиях в приложении.
Your search did not match any results.
We suggest you try the following to help find what you’re looking for:
- — Check the spelling of your keyword search.
- — Use synonyms for the keyword you typed, for example, try “application” instead of “software.”
- — Try one of the popular searches shown below.
- — Start a new search.
Trending Questions
Oracle Java SE Subscription
Java SE is the most common platform for enterprise systems and ISV applications today. Oracle Java SE Subscription and Oracle Java SE Desktop Subscription are Oracle’s solutions for enterprise developers and ISVs running mission critical applications and infrastructure on the Java SE platform.
WHAT’S NEW
- NEW: Introducing Oracle Java SE Subscription
Oracle Java SE Subscription combines license and support into a simple subscription that allows you to cost-effectively manage Java SE installations, updates and upgrades across your enterprise.
- Data Sheet [PDF]
Java SE 12.0.2 is the latest release of Java SE Platform. This release contains features like Switch Expressions, JVM Constants API, Default CDS Archives, Abortable Mixed Collections for G1, and a Low-Pause-Time Garbage Collector. See OpenJDK 12 project page for more details.
Java SE 11.0.4 is the latest update to the Java SE 11 Platform. This release contains improvements like Flight Recorder, HTTP/2 Client API, Transport Layer Security (TLS) 1.3, and Scalable low-latency garbage collector. See OpenJDK 11 project page for more details.
- Download
- Release Notes
- Download
- Learn More
- Download
- Learn More