Spec-Zone.ru › OpenJDK 17

Пакет 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, в котором зарегистрировано событие.

Список доступных имен событий извлекается путем вызова 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 в 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, 2021, 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://docs.oracle.com/en/java/javase/17/docs/api/jdk.jfr/jdk/jfr/package-summary.html

Spec-Zone.ru

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