Регистратор полета 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.9 | Oracle JDK 7 (u4 +), Oracle JDK 8 |
v1.0 | Oracle JDK 9, Oracle JDK 10 |
v2.0 | Oracle JDK 11+, Open JDK 11+, Azul JDK 8 и Azul JDK 11+ |
Смотрите также
Рекомендации
- ^ "Руководство по времени выполнения JRockit Flight Recorder" (PDF). Получено 22 января 2019.
- ^ Oracle JRockit: полное руководство. Packt Pub. п. 588. ISBN 1847198066.
- ^ "Руководство по времени выполнения Java Flight Recorder". Получено 22 января 2019.
- ^ "JEP 328: Бортовой регистратор". Получено 22 января 2019.