Класс 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() |
Возвращает |
static boolean |
isInitialized() |
Возвращает |
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()
Создает снимок всех доступных записанных данных.
Снимок — это синтезированная запись в состоянии STOPPPED. Если данных нет, возвращается запись размером 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, 2020, 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/11/docs/api/jdk.jfr/jdk/jfr/FlightRecorder.html