Spec-Zone.ru › OpenJDK 24

Класс FlightRecorder

java.lang.Object
jdk.jfr.FlightRecorder
public final class FlightRecorder extends Object
Класс для доступа, управления и обработки Flight Recorder.

Этот класс предоставляет методы для создания, запуска, остановки и уничтожения записей.

Since:
9

Краткое описание методов

Модификатор и тип Метод Описание
static void addListener(FlightRecorderListener changeListener)
Добавляет слушателя записывающего устройства.
static void addPeriodicEvent(Class<? extends Event> eventClass, Runnable hook)
Добавляет обработчик для периодического события.
List<EventType> getEventTypes()
Возвращает неизменяемый список, содержащий все в данный момент зарегистрированные события.
static FlightRecorder getFlightRecorder()
Возвращает Flight Recorder для платформы.
List<Recording> getRecordings()
Возвращает неизменяемый список доступных записей.
static boolean isAvailable()
Возвращает true, если виртуальная машина Java (JVM) поддерживает Flight Recorder.
static boolean isInitialized()
Возвращает true, если Flight Recorder инициализирован.
static void register(Class<? extends Event> eventClass)
Регистрирует класс события.
static boolean removeListener(FlightRecorderListener changeListener)
Удаляет слушателя записывающего устройства.
static boolean removePeriodicEvent(Runnable hook)
Удаляет обработчик для периодического события.
Recording takeSnapshot()
Создаёт моментальный снимок всех доступных записанных данных.
static void unregister(Class<? extends Event> eventClass)
Дерегистрирует класс события.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

getRecordings

public List<Recording> getRecordings()
Возвращает неизменяемый список доступных записей.

Запись становится доступной при её создании. Она становится недоступной, когда находится в состоянии CLOSED, обычно после вызова Recording.close().

Returns:
список записей, не null

takeSnapshot

public Recording takeSnapshot()
Создаёт моментальный снимок всех доступных записанных данных.

Моментальный снимок — это синтезированная запись в состоянии STOPPED. Если данные недоступны, возвращается запись размером 0.

Моментальный снимок обеспечивает стабильный доступ к данным для последующих операций (например, операций по изменению интервала или уменьшению размера данных).

Следующий пример демонстрирует, как создать моментальный снимок и записать подмножество данных в файл.

try (Recording snapshot = FlightRecorder.getFlightRecorder().takeSnapshot()) {
    if (snapshot.getSize() > 0) {
        snapshot.setMaxSize(100_000_000);
        snapshot.setMaxAge(Duration.ofMinutes(5));
        snapshot.dump(Paths.get("snapshot.jfr"));
    }
}
Вызывающая сторона должна закрыть запись, когда доступ к данным больше не требуется.
Returns:
моментальный снимок всех доступных данных записи, не null

register

public static void register(Class<? extends Event> eventClass)
Регистрирует класс события.

Если класс события уже зарегистрирован, то вызов этого метода игнорируется.

Parameters:
eventClass - класс события для регистрации, не null
Throws:
IllegalArgumentException - если класс абстрактный или не является подклассом Event

unregister

public static void unregister(Class<? extends Event> eventClass)
Дерегистрирует класс события.

Если класс события не зарегистрирован, то вызов этого метода игнорируется.

Parameters:
eventClass - класс события для дерегистрации, не null
Throws:
IllegalArgumentException - если класс абстрактный или не является подклассом Event

getFlightRecorder

public static FlightRecorder getFlightRecorder() throws IllegalStateException
Возвращает Flight Recorder для платформы.
Returns:
экземпляр Flight Recorder, не null
Throws:
IllegalStateException - если Flight Recorder не может быть создан (например, если виртуальная машина Java (JVM) не поддерживает Flight Recorder или если репозиторий файлов не может быть создан или доступен)

addPeriodicEvent

public static void addPeriodicEvent(Class<? extends Event> eventClass, Runnable hook)
Добавляет обработчик для периодического события.

Реализация обработчика должна возвращаться как можно скорее, чтобы избежать блокировки других операций Flight Recorder. Обработчик должен генерировать одно или несколько событий указанного типа. Когда обработчик добавлен, интервал вызовов можно настроить с помощью параметра "period".

Parameters:
eventClass - класс, для которого должен работать обработчик, не null
hook - обработчик, не null
Throws:
IllegalArgumentException - если класс не является подклассом Event, является абстрактным или обработчик уже добавлен
IllegalStateException - если класс события имеет аннотацию Registered(false) и не зарегистрирован вручную

removePeriodicEvent

public static boolean removePeriodicEvent(Runnable hook)
Удаляет обработчик для периодического события.
Parameters:
hook - обработчик для удаления, не null
Returns:
true если обработчик удален, false в противном случае

getEventTypes

public List<EventType> getEventTypes()
Возвращает неизменяемый список, содержащий все в данный момент зарегистрированные события.

По умолчанию события регистрируются при первом использовании, обычно при выделении объекта события. Чтобы гарантировать, что событие будет видно рано, регистрацию можно инициировать, вызвав метод register(Class).

Returns:
список событий, не null

addListener

public static void addListener(FlightRecorderListener changeListener)
Добавляет слушателя записывающего устройства.

Если Flight Recorder уже инициализирован при добавлении слушателя, то метод FlightRecorderListener.recorderInitialized(FlightRecorder) вызывается перед возвратом из этого метода.

Parameters:
changeListener - слушатель для добавления, не null

removeListener

public static boolean removeListener(FlightRecorderListener changeListener)
Удаляет слушателя записывающего устройства.

Если один и тот же слушатель добавляется несколько раз, удаляется только один экземпляр.

Parameters:
changeListener - слушатель для удаления, не null
Returns:
true, если слушатель мог быть удалён, false в противном случае

isAvailable

public static boolean isAvailable()
Возвращает true, если виртуальная машина Java (JVM) поддерживает Flight Recorder.

Этот метод может быстро проверить, можно ли инициализировать Flight Recorder, не выполняя фактическую работу по инициализации. Значение может изменяться во время выполнения, и кэшировать его небезопасно.

Returns:
true, если Flight Recorder доступен, false в противном случае
See Also:
  • для обратного вызова при инициализации Flight Recorder

isInitialized

public static boolean isInitialized()
Возвращает true, если Flight Recorder инициализирован.
Returns:
true, если Flight Recorder инициализирован, false в противном случае
See Also:
  • для обратного вызова при инициализации Flight Recorder

© 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/FlightRecorder.html

Spec-Zone.ru

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