Класс FlightRecorder
public final class FlightRecorder extends Object
Этот класс предоставляет методы для создания, запуска, остановки и уничтожения записей.
- Since:
- 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().
- 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
- 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:
isInitialized
public static boolean isInitialized()
true, если Flight Recorder инициализирован.- Returns:
-
true, если Flight Recorder инициализирован,falseв противном случае - See Also:
© 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