Spec-Zone.ru › OpenJDK 17

Класс RemoteRecordingStream

java.lang.Object
jdk.management.jfr.RemoteRecordingStream
Все реализованные интерфейсы:
AutoCloseable, EventStream
public final class RemoteRecordingStream extends Object implements EventStream
Реализация EventStream, которая может сериализовать события по сети, используя MBeanServerConnection.

Следующий пример демонстрирует, как записывать паузы сбора мусора и использование ЦП на удаленном хосте и выводить события на стандартный вывод.

     
     String host = "com.example";
     int port = 4711;

     String url = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi";

     JMXServiceURL u = new JMXServiceURL(url);
     JMXConnector c = JMXConnectorFactory.connect(u);
     MBeanServerConnection conn = c.getMBeanServerConnection();

     try (var rs = new RemoteRecordingStream(conn)) {
         rs.enable("jdk.GCPhasePause").withoutThreshold();
         rs.enable("jdk.CPULoad").withPeriod(Duration.ofSeconds(1));
         rs.onEvent("jdk.CPULoad", System.out::println);
         rs.onEvent("jdk.GCPhasePause", System.out::println);
         rs.start();
     }
     
 
Since:
16

Краткое описание конструкторов

Конструктор Описание
RemoteRecordingStream(MBeanServerConnection connection)
Создаёт поток событий, работающий с MBeanServerConnection, у которого зарегистрирован FlightRecorderMXBean.
RemoteRecordingStream(MBeanServerConnection connection, Path directory)
Создаёт поток событий, работающий с MBeanServerConnection, у которого зарегистрирован FlightRecorderMXBean.

Краткое описание методов

Модификатор и тип Метод Описание
void awaitTermination()
Ожидает завершения всех действий, закрытия потока или прерывания текущего потока, в зависимости от того, что произойдёт раньше.
void awaitTermination(Duration timeout)
Ожидает завершения всех действий, закрытия потока, истечения таймаута или прерывания текущего потока, в зависимости от того, что произойдёт раньше.
void close()
Освобождает все ресурсы, связанные с этим потоком.
EventSettings disable(String name)
Отключает событие с указанным именем.
void dump(Path destination)
Записывает данные записи в файл.
EventSettings enable(String name)
Включает событие с указанным именем.
void onClose(Runnable action)
Регистрирует действие, которое должно выполняться при закрытии потока.
void onError(Consumer<Throwable> action)
Регистрирует действие, которое должно выполняться при возникновении исключения.
void onEvent(String eventName, Consumer<RecordedEvent> action)
Регистрирует действие, которое должно выполняться для всех событий, соответствующих имени.
void onEvent(Consumer<RecordedEvent> action)
Регистрирует действие, которое должно выполняться для всех событий в потоке.
void onFlush(Runnable action)
Регистрирует действие, которое должно выполняться после того, как поток был сброшен.
boolean remove(Object action)
Отменяет регистрацию действия.
void setEndTime(Instant endTime)
Указывает конечную временную метку потока.
void setMaxAge(Duration maxAge)
Определяет, насколько назад данные сохраняются для потока.
void setMaxSize(long maxSize)
Определяет, сколько данных сохраняется для потока.
void setOrdered(boolean ordered)
Устанавливает, что события приходят в хронологическом порядке, отсортированные по времени их добавления в поток.
void setReuse(boolean reuse)
Устанавливает, что объект события в действии EventStream.onEvent(Consumer) может быть повторно использован.
void setSettings(Map<String,String> settings)
Заменяет все настройки для этого потока записи.
void setStartTime(Instant startTime)
Указывает начальную временную метку потока.
void start()
Начинает обработку действий.
void startAsync()
Начинает асинхронную обработку действий.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, унаследованные от интерфейса jdk.jfr.consumer.EventStream

onMetadata

Подробное описание конструкторов

RemoteRecordingStream

public RemoteRecordingStream(MBeanServerConnection connection) throws IOException
Создаёт поток событий, работающий с MBeanServerConnection, в котором зарегистрирован FlightRecorderMXBean.

Для настройки параметров событий используйте setSettings(Map).

Parameters:
connection - the MBeanServerConnection где зарегистрирован FlightRecorderMXBean, а не null
Throws:
IOException - если поток не может быть открыт, происходит ошибка ввода-вывода при попытке доступа к репозиторию или FlightRecorderMXBean
SecurityException - если существует менеджер безопасности, и его метод checkRead запрещает чтение каталога или файлов в нём.

RemoteRecordingStream

public RemoteRecordingStream(MBeanServerConnection connection, Path directory) throws IOException
Создаёт поток событий, работающий с MBeanServerConnection, в котором зарегистрирован FlightRecorderMXBean.

Для настройки параметров событий используйте setSettings(Map).

Parameters:
connection - the MBeanServerConnection где зарегистрирован FlightRecorderMXBean, а не null
directory - каталог для хранения загруженных данных событий, а не null
Throws:
IOException - если поток не может быть открыт, происходит ошибка ввода-вывода при попытке доступа к репозиторию или FlightRecorderMXBean
SecurityException - если существует менеджер безопасности, и его метод checkRead запрещает чтение каталога или файлов в нём.

Подробное описание методов

setSettings

public void setSettings(Map<String,String> settings)
Заменяет все настройки для этого потока записи.

Следующий пример подключается к удалённому хосту и потоку событий, используя настройки из конфигурации "default".

 {
     

     String host = "com.example";
     int port = 4711;

     String url = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi";

     JMXServiceURL u = new JMXServiceURL(url);
     JMXConnector c = JMXConnectorFactory.connect(u);
     MBeanServerConnection conn = c.getMBeanServerConnection();

     try (final var rs = new RemoteRecordingStream(conn)) {
         rs.onMetadata(e -> {
             for (Configuration c : e.getConfigurations()) {
                 if (c.getName().equals("default")) {
                     rs.setSettings(c.getSettings());
                 }
             }
         });
         rs.onEvent(System.out::println);
         rs.start();
     }

 
 
Parameters:
settings - настройки для установки, а не null
See Also:
  • Recording.setSettings(Map)

disable

public EventSettings disable(String name)
Отключает событие с указанным именем.

Если несколько событий имеют одинаковое имя (например, один и тот же класс загружен в разных загрузчиках классов), то все события, соответствующие имени, отключаются.

Parameters:
name - настройки для события, а не null
Returns:
настройки события для дальнейшей настройки, а не null

enable

public EventSettings enable(String name)
Включает событие с указанным именем.

Если несколько событий имеют одинаковое имя (например, один и тот же класс загружен в разных загрузчиках классов), то все события, соответствующие имени, включаются.

Parameters:
name - настройки для события, а не null
Returns:
настройки события для дальнейшей настройки, а не null
See Also:
  • EventType

setMaxAge

public void setMaxAge(Duration maxAge)
Определяет, насколько назад сохраняются данные для потока.

Для управления объёмом данных записи, хранящихся на диске, можно указать максимальную длительность хранения данных. Данные, хранящиеся на диске и старше указанного периода времени, удаляются виртуальной машиной Java (JVM).

Если ни максимальный лимит, ни максимальный срок не заданы, размер записи может неограниченно расти, если события не потребляются.

Parameters:
maxAge - длительность хранения данных, или null если бесконечно
Throws:
IllegalArgumentException - если maxAge отрицательно
IllegalStateException - если запись находится в CLOSED состоянии

setMaxSize

public void setMaxSize(long maxSize)
Определяет, сколько данных сохраняется для потока.

Для управления объёмом данных записи, хранящихся на диске, можно указать максимальный объём данных для хранения. Когда этот предел превышен, виртуальная машина Java (JVM) удаляет самую старую часть, чтобы освободить место для более новой.

Если ни максимальный лимит, ни максимальный срок не заданы, размер записи может неограниченно расти, если события не потребляются.

Размер измеряется в байтах.

Parameters:
maxSize - объём данных для сохранения, 0 если бесконечно
Throws:
IllegalArgumentException - если maxSize отрицательно
IllegalStateException - если запись находится в CLOSED состоянии

onEvent

public void onEvent(Consumer<RecordedEvent> action)
Описание скопировано из интерфейса: EventStream
Регистрирует действие для выполнения над всеми событиями в потоке.
Specified by:
onEvent в интерфейсе EventStream
Parameters:
action - действие для выполнения над каждым RecordedEvent, а не null

onEvent

public void onEvent(String eventName, Consumer<RecordedEvent> action)
Описание скопировано из интерфейса: EventStream
Регистрирует действие для выполнения над всеми событиями, соответствующими имени.
Specified by:
onEvent в интерфейсе EventStream
Parameters:
eventName - имя события, а не null
action - действие для выполнения над каждым RecordedEvent соответствующим имени события, а не null

onFlush

public void onFlush(Runnable action)
Описание скопировано из интерфейса: EventStream
Регистрирует действие для выполнения после сброса потока.
Specified by:
onFlush в интерфейсе EventStream
Parameters:
action - действие для выполнения после сброса потока, а не null

onError

public void onError(Consumer<Throwable> action)
Описание скопировано из интерфейса: EventStream
Регистрирует действие для выполнения, если произошла ошибка.

Если действие не зарегистрировано, стековый след исключения выводится в стандартный вывод ошибок.

Регистрация действия переопределяет стандартное поведение. Если зарегистрированы несколько действий, они выполняются в порядке регистрации.

Если сам этот метод вызывает исключение, результат выполнения не определён.

Specified by:
onError в интерфейсе EventStream
Parameters:
action - действие для выполнения при возникновении исключения, а не null

onClose

public void onClose(Runnable action)
Описание скопировано из интерфейса: EventStream
Регистрирует действие для выполнения при закрытии потока.

Если поток уже закрыт, действие будет выполнено немедленно в текущей нити.

Specified by:
onClose в интерфейсе EventStream
Parameters:
action - действие для выполнения после закрытия потока, а не null
See Also:
  • EventStream.close()

close

public void close()
Описание скопировано из интерфейса: EventStream
Освобождает все ресурсы, связанные с этим потоком.

Если поток запущен, асинхронно или синхронно, он останавливается немедленно или после следующего сброса. Этот метод НЕ гарантирует, что все зарегистрированные действия будут завершены до возврата.

Закрытие уже закрытого потока не имеет эффекта.

Specified by:
close в интерфейсе AutoCloseable
Specified by:
close в интерфейсе EventStream

удалить

public boolean remove(Object action)
Описание скопировано из интерфейса: EventStream
Отменяет регистрацию действия.

Если действие было зарегистрировано несколько раз, все экземпляры отменяются.

Определено в:
remove в интерфейсе EventStream
Параметры:
action - действие для отмены регистрации, не null
Возвращает:
true если действие было отменено, false в противном случае
См. также:
  • EventStream.onEvent(Consumer)
  • EventStream.onEvent(String, Consumer)
  • EventStream.onFlush(Runnable)
  • EventStream.onClose(Runnable)
  • EventStream.onError(Consumer)

установитьПовторноеИспользование

public void setReuse(boolean reuse)
Описание скопировано из интерфейса: EventStream
Указывает, что объект события в действии EventStream.onEvent(Consumer) может быть повторно использован.

Если повторное использование установлено в true, действие не должно сохранять ссылку на объект события после завершения действия.

Определено в:
setReuse в интерфейсе EventStream
Параметры:
reuse - true если объект события может быть повторно использован, false в противном случае

установитьОтсортированным

public void setOrdered(boolean ordered)
Описание скопировано из интерфейса: EventStream
Указывает, что события приходят в хронологическом порядке, отсортированные по времени их внесения в поток.
Определено в:
setOrdered в интерфейсе EventStream
Параметры:
ordered - если объекты событий поступают в хронологическом порядке в EventStream.onEvent(Consumer)

установитьВремяНачала

public void setStartTime(Instant startTime)
Описание скопировано из интерфейса: EventStream
Устанавливает время начала потока.

Время начала должно быть установлено перед запуском потока

Определено в:
setStartTime в интерфейсе EventStream
Параметры:
startTime - время начала, не null
См. также:
  • EventStream.start()
  • EventStream.startAsync()

установитьВремяОкончания

public void setEndTime(Instant endTime)
Описание скопировано из интерфейса: EventStream
Устанавливает время окончания потока.

Время окончания должно быть установлено перед запуском потока.

По достижении времени окончания, поток закрывается.

Определено в:
setEndTime в интерфейсе EventStream
Параметры:
endTime - время окончания, не null
См. также:
  • EventStream.start()
  • EventStream.startAsync()

начать

public void start()
Описание скопировано из интерфейса: EventStream
Начинает обработку действий.

Действия выполняются в текущей нити.

Для остановки потока используйте метод EventStream.close().

Определено в:
start в интерфейсе EventStream

начатьАсинхронно

public void startAsync()
Описание скопировано из интерфейса: EventStream
Начинает асинхронную обработку действий.

Действия выполняются в отдельной нити.

Для остановки потока используйте метод EventStream.close().

Определено в:
startAsync в интерфейсе EventStream

экспорт

public void dump(Path destination) throws IOException
Записывает данные записи в файл.

Поток записи должен быть запущен, но не закрыт.

Настоятельно рекомендуется установить максимальный возраст или максимальный размер перед запуском потока. В противном случае экспорт может не содержать никаких событий.

Параметры:
destination - расположение, куда записываются данные записи, не null
Исключения:
IOException - если данные записи не могут быть скопированы в указанное расположение, или если поток закрыт, или не запущен.
SecurityException - если менеджер безопасности существует и вызывающему объекту не предоставлены FilePermission для записи в целевой путь
С:
17
См. также:
  • setMaxAge(Duration)
  • setMaxSize(long)

дождатьсяЗавершения

public void awaitTermination(Duration timeout) throws InterruptedException
Описание скопировано из интерфейса: EventStream
Ожидает завершения всех действий, или закрытия потока, или истечения таймаута, или прерывания текущей нити, что произойдет первым.
Определено в:
awaitTermination в интерфейсе EventStream
Параметры:
timeout - максимальное время ожидания, не null
Исключения:
InterruptedException - если прервано во время ожидания
См. также:
  • EventStream.start()
  • EventStream.startAsync()
  • Thread.interrupt()

дождатьсяЗавершения

public void awaitTermination() throws InterruptedException
Описание скопировано из интерфейса: EventStream
Ожидает завершения всех действий, или закрытия потока, или прерывания текущей нити, что произойдет первым.
Определено в:
awaitTermination в интерфейсе EventStream
Исключения:
InterruptedException - если прервано во время ожидания
См. также:
  • EventStream.start()
  • EventStream.startAsync()
  • Thread.interrupt()

© 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.management.jfr/jdk/management/jfr/RemoteRecordingStream.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API