Класс RecordingStream
- Все реализованные интерфейсы:
-
AutoCloseable,EventStream
public final class RecordingStream extends Object implements AutoCloseable, EventStream
Следующий пример демонстрирует, как записать события с помощью стандартной конфигурации и вывести события Garbage Collection, CPU Load и JVM Information в стандартный вывод.
Configuration c = Configuration.getConfiguration("default");
try (var rs = new RecordingStream(c)) {
rs.onEvent("jdk.GarbageCollection", System.out::println);
rs.onEvent("jdk.CPULoad", System.out::println);
rs.onEvent("jdk.JVMInformation", System.out::println);
rs.start();
}
- С момента:
- 14
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RecordingStream() |
Создаёт поток событий для текущей JVM (Java Virtual Machine). |
RecordingStream |
Создаёт поток записи, используя настройки из конфигурации. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
awaitTermination() |
Ожидает завершения всех действий, или закрытия потока, или прерывания текущей нити, в зависимости от того, что произойдёт раньше. |
void |
awaitTermination |
Ожидает завершения всех действий, или закрытия потока, или истечения таймаута, или прерывания текущей нити, в зависимости от того, что произойдёт раньше. |
void |
close() |
Закрывает этот ресурс, высвобождая все связанные ресурсы. |
EventSettings |
disable |
Отключает событие. |
EventSettings |
disable |
Отключает событие с указанным именем. |
void |
dump |
Записывает данные записи в файл. |
EventSettings |
enable |
Включает событие. |
EventSettings |
enable |
Включает событие с указанным именем. |
void |
onClose |
Регистрирует действие, которое должно быть выполнено при закрытии потока. |
void |
onError |
Регистрирует действие, которое должно быть выполнено при возникновении исключения. |
void |
onEvent |
Регистрирует действие, которое должно быть выполнено для всех событий, соответствующих имени. |
void |
onEvent |
Регистрирует действие, которое должно быть выполнено для всех событий в потоке. |
void |
onFlush |
Регистрирует действие, которое должно быть выполнено после того, как поток был сброшен. |
boolean |
remove |
Удаляет регистрацию действия. |
void |
setEndTime |
Указывает конечную временную метку потока. |
void |
setMaxAge |
Определяет, насколько долго данные сохраняются для потока. |
void |
setMaxSize |
Определяет, сколько данных сохраняется для потока. |
void |
setOrdered |
Указывает, что события поступают в хронологическом порядке, отсортированные по времени их записи в поток. |
void |
setReuse |
Указывает, что объект события в действии EventStream.onEvent(Consumer) может быть повторно использован. |
void |
setSettings |
Заменяет все настройки для этого потока записи. |
void |
setStartTime |
Указывает начальную временную метку потока. |
void |
start() |
Начинает обработку действий. |
void |
startAsync() |
Начинает асинхронную обработку действий. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, унаследованные от интерфейса jdk.jfr.consumer.EventStream
onMetadata
Подробное описание конструкторов
RecordingStream
public RecordingStream()
- Исключение:
-
IllegalStateException- если Запись событий не может быть создана (например, если виртуальная машина Java (JVM) не поддерживает Запись событий, или если хранилище файлов не может быть создано или обработано) -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетFlightRecorderPermission("accessFlightRecorder")
RecordingStream
public RecordingStream(Configuration configuration)
Следующий пример показывает, как создать поток записи, использующий предопределённую конфигурацию.
var c = Configuration.getConfiguration("default");
try (var rs = new RecordingStream(c)) {
rs.onEvent(System.out::println);
rs.start();
}
- Параметры:
-
configuration- конфигурация, содержащая используемые настройки, а неnull - Исключение:
-
IllegalStateException- если Запись событий не может быть создана (например, если виртуальная машина Java (JVM) не поддерживает Запись событий, или если хранилище файлов не может быть создано или обработано) -
SecurityException- если используется менеджер безопасности и разрешение FlightRecorderPermission "accessFlightRecorder" не задано. - См. также:
Подробное описание методов
enable
public EventSettings enable(String name)
Если несколько событий имеют одинаковое имя (например, один и тот же класс загружен в разных загрузчиках классов), тогда все события, соответствующие имени, включаются. Чтобы включить определённый класс, используйте метод enable(Class) или представление типа события ID.
- Параметры:
-
name- настройки события, неnull - Возвращает:
- настройки события для дальнейшей конфигурации, не
null - См. также:
setSettings
public void setSettings(Map<String,String> settings)
Следующий пример записывает 20 секунд, используя конфигурацию "default", а затем изменяет настройки на конфигурацию "profile".
Configuration defaultConfiguration = Configuration.getConfiguration("default");
Configuration profileConfiguration = Configuration.getConfiguration("profile");
try (var rs = new RecordingStream(defaultConfiguration)) {
rs.onEvent(System.out::println);
rs.startAsync();
Thread.sleep(20_000);
rs.setSettings(profileConfiguration.getSettings());
Thread.sleep(20_000);
}
- Параметры:
-
settings- настройки для установки, неnull - См. также:
enable
public EventSettings enable(Class<? extends Event> eventClass)
- Параметры:
-
eventClass- событие для включения, неnull - Возвращает:
- настройки события для дальнейшей конфигурации, не
null - Исключение:
-
IllegalArgumentException- еслиeventClassявляется абстрактным классом или не является подклассомEvent
disable
public EventSettings disable(String name)
Если несколько событий с одинаковым именем (например, один и тот же класс загружен в разных загрузчиках классов), все события, соответствующие имени, отключаются. Чтобы отключить конкретный класс, используйте метод disable(Class) или представление типа события ID.
- Параметры:
-
name- настройки события, неnull - Возвращает:
- настройки события для дальнейшей конфигурации, не
null
disable
public EventSettings disable(Class<? extends Event> eventClass)
- Параметры:
-
eventClass- событие для отключения, неnull - Возвращает:
- настройки события для дальнейшей конфигурации, не
null - Исключение:
-
IllegalArgumentException- еслиeventClassявляется абстрактным классом или не является подклассомEvent
setMaxAge
public void setMaxAge(Duration maxAge)
Для управления количеством данных записи, хранящихся на диске, можно указать максимальное время хранения данных. Данные, хранящиеся на диске и старше указанного времени, удаляются виртуальной машиной Java (JVM).
Если не заданы ни максимальный предел, ни максимальный срок, размер записи может неограниченно расти, если события включены
- Параметры:
-
maxAge- продолжительность хранения данных, илиnullдля бесконечности - Исключение:
-
IllegalArgumentException- еслиmaxAgeотрицательно -
IllegalStateException- если запись находится в состоянииCLOSED
setMaxSize
public void setMaxSize(long maxSize)
Для управления количеством данных записи, хранящихся на диске, можно указать максимальный объём данных для хранения. Когда максимальный предел превышен, виртуальная машина Java (JVM) удаляет самую старую часть, чтобы освободить место для более новой.
Если не заданы ни максимальный предел, ни максимальный срок, размер записи может неограниченно расти.
Размер измеряется в байтах.
- Параметры:
-
maxSize- объём данных для хранения,0для бесконечности - Исключение:
-
IllegalArgumentException- еслиmaxSizeотрицательно -
IllegalStateException- если запись находится в состоянииCLOSED
setReuse
public void setReuse(boolean reuse)
EventStreamEventStream.onEvent(Consumer) может быть повторно использован. Если повторное использование установлено в true, действие не должно хранить ссылку на объект события после завершения действия.
- Определяется в:
-
setReuseв интерфейсеEventStream - Параметры:
-
reuse-trueесли объект события может быть повторно использован,falseв противном случае
setOrdered
public void setOrdered(boolean ordered)
EventStream- Определяется в:
-
setOrderedв интерфейсеEventStream - Параметры:
-
ordered- если объекты событий приходят в хронологическом порядке вEventStream.onEvent(Consumer)
setStartTime
public void setStartTime(Instant startTime)
EventStreamНачальное время должно быть установлено до запуска потока.
- Определяется в:
-
setStartTimeв интерфейсеEventStream - Параметры:
-
startTime- начальное время, неnull - См. также:
setEndTime
public void setEndTime(Instant endTime)
EventStreamКонечное время должно быть установлено до запуска потока.
В конечное время поток закрывается.
- Определяется в:
-
setEndTimeв интерфейсеEventStream - Параметры:
-
endTime- конечное время, неnull - См. также:
onEvent
public void onEvent(String eventName, Consumer<RecordedEvent> action)
EventStream- Определяется в:
-
onEventв интерфейсеEventStream - Параметры:
-
eventName- имя события, неnull -
action- действие для выполнения на каждомRecordedEvent, соответствующем имени события, неnull
onEvent
public void onEvent(Consumer<RecordedEvent> action)
EventStream- Определяется в:
-
onEventв интерфейсеEventStream - Параметры:
-
action- действие для выполнения на каждомRecordedEvent, неnull
onFlush
public void onFlush(Runnable action)
EventStream- Определено в:
-
onFlushв интерфейсеEventStream - Параметры:
-
action- действие, выполняемое после сброса потока, неnull
onClose
public void onClose(Runnable action)
EventStreamЕсли поток уже закрыт, действие будет выполнено немедленно в текущей нити.
- Определено в:
-
onCloseв интерфейсеEventStream - Параметры:
-
action- действие, выполняемое после закрытия потока, неnull - См. также:
onError
public void onError(Consumer<Throwable> action)
EventStreamЕсли действие не зарегистрировано, трассировка стека исключений выводится в стандартный поток ошибок.
Регистрация действия переопределяет поведение по умолчанию. Если зарегистрировано несколько действий, они выполняются в порядке регистрации.
Если этот метод сам вызывает исключение, поведение не определено.
- Определено в:
-
onErrorв интерфейсеEventStream - Параметры:
-
action- действие, выполняемое при возникновении исключения, неnull
close
public void close()
AutoCloseabletry-с-ресурсами.- Определено в:
-
closeв интерфейсеAutoCloseable - Определено в:
-
closeв интерфейсеEventStream
remove
public boolean remove(Object action)
EventStreamЕсли действие зарегистрировано несколько раз, все экземпляры удаляются.
- Определено в:
-
removeв интерфейсеEventStream - Параметры:
-
action- действие для удаления, неnull - Возвращает:
-
trueесли действие было удалено,falseв противном случае - См. также:
start
public void start()
EventStreamДействия выполняются в текущей нити.
Чтобы остановить поток, используйте метод EventStream.close().
- Определено в:
-
startв интерфейсеEventStream
startAsync
public void startAsync()
Действия выполняются в отдельной нити.
Чтобы остановить поток, используйте метод close().
Следующий пример выводит использование ЦП в течение десяти секунд. Когда текущая нить выходит из блока try-with-resources, поток останавливается/закрывается.
try (var stream = new RecordingStream()) {
stream.enable("jdk.CPULoad").withPeriod(Duration.ofSeconds(1));
stream.onEvent("jdk.CPULoad", event -> {
System.out.println(event);
});
stream.startAsync();
Thread.sleep(10_000);
}
- Определено в:
-
startAsyncв интерфейсеEventStream - Исключения:
-
IllegalStateException- если поток уже запущен или закрыт
dump
public void dump(Path destination) throws IOException
Поток записи должен быть запущен, но не закрыт.
Настоятельно рекомендуется установить максимальный срок действия или максимальный размер перед запуском потока. В противном случае дамп может не содержать никаких событий.
- Параметры:
-
destination- местоположение, куда записываются данные записи, неnull - Исключения:
-
IOException- если данные записи не могут быть скопированы в указанное местоположение, или если поток закрыт, или не запущен. -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетFilePermissionдля записи в целевой путь - С:
- 17
- См. также:
awaitTermination
public void awaitTermination(Duration timeout) throws InterruptedException
EventStream- Определено в:
-
awaitTerminationв интерфейсеEventStream - Параметры:
-
timeout- максимальное время ожидания, неnull - Исключения:
-
InterruptedException- если ожидание было прервано - См. также:
awaitTermination
public void awaitTermination() throws InterruptedException
EventStream- Определено в:
-
awaitTerminationв интерфейсеEventStream - Исключения:
-
InterruptedException- если ожидание было прервано - См. также:
© 1993, 2021, 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/17/docs/api/jdk.jfr/jdk/jfr/consumer/RecordingStream.html