Регистратор полета JDK - JDK Flight Recorder

Регистратор полета JDK это регистратор событий, встроенный в Виртуальная машина Java. Его можно рассматривать как программный эквивалент регистратора данных полета (черного ящика) в коммерческом самолете. Он фиксирует информацию о JVM само и приложение, работающее в JVM. Имеется широкий спектр собираемых данных, например, профилирование методов, профилирование распределения и события, связанные со сборкой мусора. В Регистратор полета JDK был разработан, чтобы минимизировать Эффект наблюдателя в профилированной системе и всегда должен быть включен в производственных системах. Технология была открыта в 2018 году.

Анализ и визуализация записей полета обычно выполняются с использованием JDK Mission Control.

Технологии

Файл записи состоит из двоичных фрагментов данных. Каждый фрагмент является самоописывающимся и самодостаточным. Другими словами, метаданные (такие как тип данных и тип содержимого каждого атрибута), необходимые для использования данных (не только для анализа событий, но и для их фактического использования), включаются в блок. Также все значения, которые необходимо разрешить, например, постоянные пулы также включаются в блок.

Для повышения эффективности JFR используется множество различных технологий, например:

  • Двоичные представления, никаких переводов туда и обратно в строки, буферы эффективно выводятся на диск
  • Большинство событий записываются в локальные собственные буферы потока
  • На некоторых платформах инвариантен TSC используется для эффективной отметки времени
  • Схема целочисленного сжатия, чтобы уменьшить размер в памяти и в файле
  • Поскольку они реализованы в JVM, многие данные легко доступны или отправляются в то время, когда они доступны, что снижает затраты.

При преобразовании двоичной записи в JSON, он может легко взорваться на два порядка и более, в зависимости от длины и записанного контента.

Ожидаемые накладные расходы на производительность JFR с использованием шаблона по умолчанию составляют менее процента, а для шаблона профилирования - менее двух процентов.

История

JDK Flight Recorder начинался как JRockit Flight Recorder и первоначально использовался как средство для сбора данных, которые будут использоваться для улучшения самой JVM.[1][2] После того, как Oracle приобрела Sun Microsystems, JRockit Flight Recorder был переименован в Java Flight Recorder.[3] В 2018 году Java Flight Recorder был открыт и выпущен как часть OpenJDK 11.[4] Когда был открыт исходный код, он был переименован в JDK Flight Recorder из-за проблем с товарным знаком Java.

Версии

Это доступные версии файлового формата JFR. Он не охватывает все версии, которые когда-либо существовали, а скорее версии, которые существуют в JVM после миграции на HotSpot.

Версия JFRВерсии JDK
v0.9Oracle JDK 7 (u4 +), Oracle JDK 8
v1.0Oracle JDK 9, Oracle JDK 10
v2.0Oracle JDK 11+, Open JDK 11+, Azul JDK 8 и Azul JDK 11+

Смотрите также

Рекомендации

  1. ^ "Руководство по времени выполнения JRockit Flight Recorder" (PDF). Получено 22 января 2019.
  2. ^ Oracle JRockit: полное руководство. Packt Pub. п. 588. ISBN  1847198066.
  3. ^ "Руководство по времени выполнения Java Flight Recorder". Получено 22 января 2019.
  4. ^ "JEP 328: Бортовой регистратор". Получено 22 января 2019.

внешняя ссылка