Spec-Zone.ru › OpenJDK 21

Класс FlightRecorder

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

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

Since:
9

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

Модификатор и тип Метод Описание
static void addListener(FlightRecorderListener changeListener)
Добавляет слушателя записи и получает AccessControlContext для вызова слушателя.
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().

Возвращает:
список записей, не 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"));
    }
}
Вызывающий метод должен закрыть запись, когда доступ к данным больше не нужен.
Возвращает:
снимок всех доступных данных записи, не null

register

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

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

Параметры:
eventClass - класс события для регистрации, не null
Исключения:
IllegalArgumentException - если класс абстрактный или не является подклассом Event
SecurityException - если существует менеджер безопасности, и у вызывающего метода нет FlightRecorderPermission("registerEvent")

unregister

public static void unregister(Class<? extends Event> eventClass)
Отменяет регистрацию класса события.

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

Параметры:
eventClass - класс события для отмены регистрации, не null
Исключения:
IllegalArgumentException - если класс абстрактный или не является подклассом Event
SecurityException - если существует менеджер безопасности, и у вызывающего метода нет FlightRecorderPermission("registerEvent")

getFlightRecorder

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

addPeriodicEvent

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

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

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

removePeriodicEvent

public static boolean removePeriodicEvent(Runnable hook) throws SecurityException
Удаляет обработчик для периодического события.
Параметры:
hook - обработчик для удаления, не null
Возвращает:
true если обработчик был удален, false в противном случае
Исключения:
SecurityException - если существует менеджер безопасности, и у вызывающего метода нет FlightRecorderPermission("registerEvent")

getEventTypes

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

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

Возвращает:
список событий, не null

addListener

public static void addListener(FlightRecorderListener changeListener)
Добавляет слушателя записи и получает AccessControlContext для вызова слушателя.

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

Параметры:
changeListener - слушатель для добавления, не null
Исключения:
SecurityException - если существует менеджер безопасности, и у вызывающего метода нет FlightRecorderPermission("accessFlightRecorder")

removeListener

public static boolean removeListener(FlightRecorderListener changeListener)
Удаляет слушателя записи.

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

Параметры:
changeListener - слушатель для удаления, не null
Возвращает:
true, если слушатель может быть удален, false в противном случае
Исключения:
SecurityException - если существует менеджер безопасности, и у вызывающего метода нет FlightRecorderPermission("accessFlightRecorder")

isAvailable

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

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

Возвращает:
true, если Flight Recorder доступен, false в противном случае
См. также:
  • for callback when Flight Recorder is initialized

isInitialized

public static boolean isInitialized()
Возвращает true , если Flight Recorder инициализирован.
Возвращает:
true, если Flight Recorder инициализирован, false в противном случае
См. также:
  • for callback when Flight Recorder is initialized

© 1993, 2023, 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/21/docs/api/jdk.jfr/jdk/jfr/FlightRecorder.html

Spec-Zone.ru

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