Класс FlightRecorder
public final class FlightRecorder extends Object
Этот класс предоставляет методы, необходимые для создания, запуска, остановки и удаления записей.
- Начиная с:
- 9
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static void |
addListener |
Добавляет слушателя средства записи. |
static void |
addPeriodicEvent |
Добавляет обработчик периодического события. |
List |
getEventTypes() |
Возвращает неизменяемый список, содержащий все зарегистрированные на данный момент события. |
static FlightRecorder |
getFlightRecorder() |
Возвращает Flight Recorder для платформы. |
List |
getRecordings() |
Возвращает неизменяемый список доступных записей. |
static boolean |
isAvailable() |
Возвращает true, если виртуальная машина Java (JVM) поддерживает Flight Recorder. |
static boolean |
isInitialized() |
Возвращает true, если Flight Recorder инициализирован. |
static void |
register |
Регистрирует класс события. |
static boolean |
removeListener |
Удаляет слушателя средства записи. |
static boolean |
removePeriodicEvent |
Удаляет обработчик периодического события. |
Recording |
takeSnapshot() |
Создает снимок всех доступных записанных данных. |
static void |
unregister |
Отменяет регистрацию класса события. |
Подробное описание методов
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
unregister
public static void unregister(Class<? extends Event> eventClass)
Если класс события не зарегистрирован, вызов этого метода игнорируется.
- Параметры:
-
eventClass— класс события, регистрацию которого нужно отменить, неnull - Исключения:
-
IllegalArgumentException— если класс является абстрактным или не является подклассомEvent
getFlightRecorder
public static FlightRecorder getFlightRecorder() throws IllegalStateException
- Возвращает:
- экземпляр Flight Recorder, не
null - Исключения:
-
IllegalStateException— если не удается создать Flight Recorder (например, если виртуальная машина Java (JVM) не поддерживает Flight Recorder или если не удается создать или получить доступ к репозиторию файлов)
addPeriodicEvent
public static void addPeriodicEvent(Class<? extends Event> eventClass, Runnable hook)
Реализация обработчика должна завершаться как можно быстрее, чтобы не блокировать другие операции Flight Recorder. Обработчик должен создавать одно или несколько событий указанного типа. После добавления обработчика интервал вызова можно настроить с помощью параметра "period".
- Параметры:
-
eventClass— класс, для которого должен выполняться обработчик, неnull -
hook— обработчик, неnull - Исключения:
-
IllegalArgumentException— если класс не является подклассомEvent, является абстрактным или обработчик уже добавлен -
IllegalStateException— если класс события имеет аннотациюRegistered(false)и не зарегистрирован вручную
removePeriodicEvent
public static boolean removePeriodicEvent(Runnable hook)
- Параметры:
-
hook— обработчик для удаления, неnull - Возвращает:
-
true, если обработчик удален, иначеfalse
getEventTypes
public List<EventType> getEventTypes()
По умолчанию события регистрируются при первом использовании, обычно при создании объекта события. Чтобы событие стало доступно заранее, регистрацию можно запустить вызовом метода register(Class).
- Возвращает:
- список событий, не
null
addListener
public static void addListener(FlightRecorderListener changeListener)
Если на момент добавления слушателя Flight Recorder уже инициализирован, перед возвратом из этого метода вызывается метод FlightRecorderListener.recorderInitialized(FlightRecorder).
- Параметры:
-
changeListener— слушатель для добавления, неnull
removeListener
public static boolean removeListener(FlightRecorderListener changeListener)
Если один и тот же слушатель добавлен несколько раз, удаляется только один экземпляр.
- Параметры:
-
changeListener— слушатель для удаления, неnull - Возвращает:
-
true, если слушателя удалось удалить, иначеfalse
isAvailable
public static boolean isAvailable()
true, если виртуальная машина Java (JVM) поддерживает Flight Recorder. Этот метод позволяет быстро проверить, можно ли инициализировать Flight Recorder, не выполняя саму инициализацию. Значение может меняться во время выполнения, поэтому его нельзя безопасно кэшировать.
- Возвращает:
-
true, если Flight Recorder доступен, иначеfalse - См. также:
isInitialized
public static boolean isInitialized()
true, если Flight Recorder инициализирован.- Возвращает:
-
true, если Flight Recorder инициализирован, иначеfalse - См. также:
© 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://docs.oracle.com/en/java/javase/25/docs/api/jdk.jfr/jdk/jfr/FlightRecorder.html