Spec-Zone.ru › OpenJDK 24

Пакет jdk.jfr

package jdk.jfr
Этот пакет предоставляет классы для создания событий и управления Flight Recorder.

Определение событий

Flight Recorder собирает данные в виде событий. Событие имеет временную метку, продолжительность и, как правило, полезную для диагностики работающего приложения до сбоя или аварийного завершения работы прикладную нагрузку.

Для определения события Flight Recorder, расширьте Event и добавьте поля, соответствующие типам данных нагрузки. Метаданные о полях, такие как метки, описания и единицы измерения, могут быть добавлены с помощью аннотаций, доступных в пакете jdk.jfr, или с помощью пользовательской аннотации, имеющей аннотацию MetadataDefinition.

После определения класса события можно создавать его экземпляры (объекты события). Данные хранятся в событии путем присвоения данных полям. Временные метки событий можно явно контролировать, используя методы begin и end, доступные в классе Event.

Сбор данных для хранения в событии может быть затратным. Метод Event.shouldCommit() может использоваться для проверки того, будет ли экземпляр события фактически записан в систему при вызове метода Event.commit(). Если Event.shouldCommit() возвращает false, то эти операции можно избежать.

Иногда структура полей события неизвестна на этапе компиляции. В этом случае событие можно динамически определить. Однако динамические события могут иметь не такую высокую производительность, как статически определенные, и инструменты могут не быть способны идентифицировать и визуализировать данные без знания структуры.

Для динамического определения события используйте класс EventFactory и определите поля с помощью класса ValueDescriptor, а аннотации определите с помощью класса AnnotationElement. Используйте фабрику для выделения события и метод Event.set(int, Object) для его заполнения.

Управление Flight Recorder

Flight Recorder можно управлять локально с помощью командной строки jcmd или удаленно с помощью интерфейса FlightRecorderMXBean, зарегистрированного в платформенном MBeanServer. При необходимости прямого программного доступа экземпляр Flight Recorder можно получить, вызвав FlightRecorder.getFlightRecorder(), а запись создать, используя класс Recording, из которого настраивается количество записываемых данных.

Настройки и конфигурация

Настройка состоит из пары имя/значение, где имя определяет событие и настройку для конфигурации, а значение определяет, на что ее установить.

Имя может быть сформировано следующим образом:

<event-name> + "#" + <setting-name>

или

<event-id> + "#" + <setting-name>

Например, чтобы установить интервал выборки события CPU Load один раз в секунду, используйте имя "jdk.CPULoad#period" и значение "1 s". Если несколько событий используют одно и то же имя, например, если класс события загружается в нескольких загрузчиках классов и требуется их различение, то имя имеет вид "56#period". Идентификатор события можно получить, вызвав метод EventType.getId(), и он является действительным для экземпляра Java Virtual Machine, в котором зарегистрировано событие.

Список доступных имен событий извлекается путем вызова FlightRecorder.getEventTypes() и EventType.getName(). Список доступных настроек для типа события получен вызовом EventType.getSettingDescriptors() и ValueDescriptor.getName().

Предварительно определенные настройки

Имена настроек событий и их назначение.
Имя Описание Значение по умолчанию Формат Примеры значений
enabled Указывает, записывается ли событие "true" Строковое представление Boolean ("true" или "false") "true"
"false"
threshold Указывает продолжительность, ниже которой событие не записывается "0" (нет предела) "0" если порог не используется, иначе строковое представление положительного Long, за которым следует пробел и одна из следующих единиц:
  • "ns" (наносекунды)
  • "us" (микросекунды)
  • "ms" (миллисекунды)
  • "s" (секунды)
  • "m" (минуты)
  • "h" (часы)
  • "d" (дни)
"0"
"10 ms"
"1 с"
period Указывает интервал, с которым событие генерируется, если оно периодическое "everyChunk" "everyChunk", если периодическое событие должно генерироваться при каждой смене файла, иначе строковое представление положительного Long значения, за которым следует пробел и одна из следующих единиц:
  • "ns" (наносекунды)
  • "us" (микросекунды)
  • "ms" (миллисекунды)
  • "s" (секунды)
  • "m" (минуты)
  • "h" (часы)
  • "d" (дни)
"20 ms"
"1 s"
"everyChunk"
stackTrace Указывает, записывается ли стек вызовов из метода Event.commit() "true" Строковое представление Boolean ("true" или "false") "true",
"false"

Обработка значений null

Все методы определяют, принимают ли они или возвращают null в Javadoc. Обычно это выражается как "not null". Если используется параметр null, где это запрещено, выбрасывается исключение java.lang.NullPointerException. Если параметр null передается методу, который выбрасывает другие исключения, такие как java.io.IOException, исключение java.lang.NullPointerException имеет приоритет, если Javadoc для метода явно не указывает, как null обрабатывается, т.е. путем выбрасывания исключения java.lang.IllegalArgumentException.

Since:
9
Пакет Описание
jdk.jfr.consumer
В этом пакете содержатся классы для потребления данных Flight Recorder.
Класс Описание
AnnotationElement
Описывает метаданные события, такие как метки, описания и единицы измерения.
BooleanFlag
Аннотация поля события, указывает, что значение является флагом булевого типа, значением true или false.
Category
Аннотация события, для ассоциации типа события с категорией в формате удобочитаемого пути.
Configuration
Коллекция настроек и метаданных, описывающих конфигурацию.
ContentType
Мета-аннотация, указывает, что аннотация представляет тип содержимого, такой как временной интервал или частота.
DataAmount
Аннотация поля события, указывает, что значение представляет количество данных (например, байты).
Description
Аннотация, которая описывает элемент с помощью одной или двух предложений.
Enabled
Аннотация события, определяет, должен ли быть включен тип события по умолчанию.
Event
Базовый класс для событий, подклассы которого определяют события и их поля.
EventFactory
Класс для определения события во время выполнения.
EventSettings
Удобный класс для применения настроек событий к записи.
EventType
Описывает событие, его поля, настройки и аннотации.
Experimental
Аннотация, которая указывает, что элемент является экспериментальным и может быть изменен без предварительного уведомления.
FlightRecorder
Класс для доступа, управления и обработки Flight Recorder.
FlightRecorderListener
Интерфейс обратного вызова для мониторинга жизненного цикла Flight Recorder.
FlightRecorderPermission
Разрешение для управления доступом к Flight Recorder.
Frequency
Аннотация поля события, указывает, что значение является частотой, измеряемой в Гц.
Label
Аннотация, которая устанавливает удобочитаемое имя для элемента (например, "Maximum Throughput").
MemoryAddress
Аннотация поля события, указывает, что значение является адресом памяти.
MetadataDefinition
Мета-аннотация для определения новых типов метаданных события.
Name
Аннотация, которая устанавливает имя элемента по умолчанию.
Percentage
Аннотация поля события для использования с дробями, обычно между 0.0 и 1.0, для указания того, что значение является процентом.
Period
Аннотация события, задает значение по умолчанию для периодического события.
Recording
Предоставляет средства для настройки, запуска, остановки и выгрузки данных записи на диск.
RecordingState
Указывает состояние на жизненном цикле записи.
Registered
Аннотация события для программированного регистрирования события.
Relational
Мета-аннотация для реляционных аннотаций, используемая на аннотации.
SettingControl
Базовый класс для расширения с целью создания элементов управления настройками.
SettingDefinition
Аннотация, которая указывает, что метод в классе события должен использоваться для фильтрации событий.
SettingDescriptor
Описание настройки события.
StackTrace
Аннотация события, определяет, будет ли событие по умолчанию содержать стек вызовов или нет.
Threshold
Аннотация события, задает значение по умолчанию для продолжительности, ниже которой событие не записывается (например, "20 ms").
Timespan
Аннотация поля события, указывает, что значение является продолжительностью.
Timestamp
Аннотация поля события, указывает, что значение является точкой во времени.
TransitionFrom
Аннотация поля события, указывает, что событие перешло с потока.
TransitionTo
Аннотация поля события, указывает, что событие вскоре перейдет на поток.
Unsigned
Аннотация поля события, указывает, что значение имеет тип данных без знака.
ValueDescriptor
Описывает поля события и элементы аннотаций.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/jdk.jfr/jdk/jfr/package-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API