Класс FlightRecorder
public final class FlightRecorder extends Object
Этот класс предоставляет методы, необходимые для создания, запуска, остановки и уничтожения записей.
- Since:
- 9
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static void |
addListener |
Добавляет слушателя записи и получает AccessControlContext для вызова слушателя. |
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 -
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, не
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в противном случае - См. также:
isInitialized
public static boolean isInitialized()
true , если Flight Recorder инициализирован.- Возвращает:
-
true, если Flight Recorder инициализирован,falseв противном случае - См. также:
© 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