Spec-Zone.ru › OpenJDK 21

Класс Recording

java.lang.Object
jdk.jfr.Recording
Все реализованные интерфейсы:
Closeable, AutoCloseable
public final class Recording extends Object implements Closeable
Предоставляет средства для настройки, запуска, остановки и выгрузки данных записи на диск.

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

Configuration c = Configuration.getConfiguration("default");
try (Recording r = new Recording(c)) {
    r.start();
    System.gc();
    Thread.sleep(5000);
    r.stop();
    r.dump(Files.createTempFile("my-recording", ".jfr"));
}
С:
9

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

Конструктор Описание
Recording()
Создаёт запись без каких-либо настроек.
Recording(Map<String,String> settings)
Создаёт запись с настройками из карты пар имя-значение.
Recording(Configuration configuration)
Создаёт запись с настройками из конфигурации.

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

Модификатор и тип Метод Описание
void close()
Освобождает все данные, связанные с этой записью.
Recording copy(boolean stop)
Возвращает клон этой записи с новым идентификатором и именем записи.
EventSettings disable(Class<? extends Event> eventClass)
Отключает событие.
EventSettings disable(String name)
Отключает событие с указанным именем.
void dump(Path destination)
Записывает данные записи в файл.
EventSettings enable(Class<? extends Event> eventClass)
Включает событие.
EventSettings enable(String name)
Включает событие с указанным именем.
Path getDestination()
Возвращает целевой файл, в который записываются данные записи при остановке записи, или null если назначенное место назначения отсутствует.
boolean getDumpOnExit()
Возвращает значение, указывающее, выгружается ли эта запись на диск при выходе JVM.
Duration getDuration()
Возвращает указанную продолжительность для этой записи или null если продолжительность не установлена.
long getId()
Возвращает уникальный идентификатор для этой записи.
Duration getMaxAge()
Возвращает продолжительность хранения данных в хранилище на диске перед их удалением.
long getMaxSize()
Возвращает максимальный размер, измеряемый в байтах, данных, которые больше не хранятся в хранилище на диске.
String getName()
Возвращает имя этой записи.
Map<String,String> getSettings()
Возвращает настройки, используемые этой записью.
long getSize()
Возвращает текущий размер этой записи в хранилище на диске, измеряемый в байтах.
Instant getStartTime()
Возвращает время начала этой записи.
RecordingState getState()
Возвращает состояние записи, в котором находится эта запись.
Instant getStopTime()
Возвращает время остановки этой записи.
InputStream getStream(Instant start, Instant end)
Создаёт поток данных для указанного интервала.
boolean isToDisk()
Возвращает true если эта запись использует хранилище на диске, false в противном случае.
void scheduleStart(Duration delay)
Запускает эту запись после задержки.
void setDestination(Path destination)
Устанавливает место, в которое записываются данные при остановке записи, или null если данные не должны выгружаться.
void setDumpOnExit(boolean dumpOnExit)
Устанавливает значение, указывающее, выгружается ли эта запись на диск при выходе JVM.
void setDuration(Duration duration)
Устанавливает продолжительность, в течение которой выполняется запись, прежде чем она остановится.
void setMaxAge(Duration maxAge)
Определяет, как далеко назад хранятся данные в хранилище на диске.
void setMaxSize(long maxSize)
Определяет, сколько данных хранится в хранилище на диске.
void setName(String name)
Устанавливает удобочитаемое имя (например, "My Recording").
void setSettings(Map<String,String> settings)
Заменяет все настройки для этой записи.
void setToDisk(boolean disk)
Определяет, выгружается ли эта запись непрерывно в хранилище на диске или данные ограничиваются доступными буферами в памяти.
void start()
Запускает эту запись.
boolean stop()
Останавливает эту запись.

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

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

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

Запись

public Recording(Map<String,String> settings)
Создаёт запись с настройками из карты пар имя-значение.

Новая запись находится в состоянии RecordingState.NEW. Чтобы начать запись, вызовите метод start().

Параметры:
settings - настройки в виде карты пар имя-значение, не null
Исключения:
IllegalStateException - если Flight Recorder не может быть создан (например, если в Java Virtual Machine (JVM) отсутствует поддержка Flight Recorder или если репозиторий файлов не может быть создан или доступен)
SecurityException - если используется менеджер безопасности и разрешение FlightRecorderPermission "accessFlightRecorder" не установлено.
См. также:
  • jdk.jfr

Запись

public Recording()
Создаёт запись без каких-либо настроек.

Новая запись находится в состоянии RecordingState.NEW. Чтобы начать запись, вызовите метод start().

Исключения:
IllegalStateException - если Flight Recorder не может быть создан (например, если в Java Virtual Machine (JVM) отсутствует поддержка Flight Recorder или если репозиторий файлов не может быть создан или доступен)
SecurityException - если используется менеджер безопасности и разрешение FlightRecorderPermission "accessFlightRecorder" не установлено.

Запись

public Recording(Configuration configuration)
Создаёт запись с настройками из конфигурации.

Следующий пример демонстрирует создание записи, использующей предопределённую конфигурацию.

Recording r = new Recording(Configuration.getConfiguration("default"));
Новая запись находится в состоянии RecordingState.NEW. Чтобы начать запись, вызовите метод start().
Параметры:
configuration - конфигурация, содержащая используемые настройки, не null
Исключения:
IllegalStateException - если Flight Recorder не может быть создан (например, если в Java Virtual Machine (JVM) отсутствует поддержка Flight Recorder или если репозиторий файлов не может быть создан или доступен)
SecurityException - если используется менеджер безопасности и разрешение FlightRecorderPermission "accessFlightRecorder" не установлено.
См. также:
  • Configuration

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

start

public void start()
Начинает эту запись.

Рекомендуется настроить параметры записи и параметры событий перед вызовом этого метода. Это обеспечивает более согласованное состояние при анализе записанных данных и улучшает производительность, поскольку конфигурация может применяться атомарно.

После успешного вызова этого метода, эта запись находится в состоянии RUNNING.

Исключения:
IllegalStateException - если запись уже запущена или находится в состоянии CLOSED

scheduleStart

public void scheduleStart(Duration delay)
Начинает эту запись после задержки.

После успешного вызова этого метода, эта запись находится в состоянии DELAYED.

Параметры:
delay - время ожидания перед запуском этой записи, не null
Исключения:
IllegalStateException - если запись не находится в состоянии NEW

stop

public boolean stop()
Останавливает эту запись.

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

После успешного вызова этого метода, эта запись будет в состоянии STOPPED.

Возвращает:
true если запись остановлена, false в противном случае
Исключения:
IllegalStateException - если запись не запущена или уже остановлена
SecurityException - если менеджер безопасности существует и у вызывающего объекта нет FilePermission для записи в путь назначения
См. также:
  • setDestination(Path)

getSettings

public Map<String,String> getSettings()
Возвращает настройки, используемые этой записью.

Изменение возвращённых Map не изменит настройки этой записи.

Если для этой записи настройки не установлены, возвращается пустая Map.

Возвращает:
настройки записи, не null

getSize

public long getSize()
Возвращает текущий размер этой записи в репозитории диска, измеряемый в байтах.

Размер обновляется при сбросе буферов записи. Если запись не записывается в репозиторий диска, возвращаемый размер всегда 0.

Возвращает:
объём записанных данных, измеряемый в байтах, или 0 если запись не записывается в репозиторий диска

getStopTime

public Instant getStopTime()
Возвращает время остановки этой записи.
Возвращает:
время или null если эта запись не остановлена

getStartTime

public Instant getStartTime()
Возвращает время запуска этой записи.
Возвращает:
время или null если эта запись не запущена

getMaxSize

public long getMaxSize()
Возвращает максимальный размер, измеряемый в байтах, после которого данные больше не хранятся в репозитории диска.
Возвращает:
максимальный размер в байтах или 0 если максимальный размер не установлен

getMaxAge

public Duration getMaxAge()
Возвращает длительность хранения данных в репозитории диска перед удалением.
Возвращает:
максимальная длительность или null если максимальная длительность не установлена

getName

public String getName()
Возвращает имя этой записи.

По умолчанию имя совпадает с идентификатором записи.

Возвращает:
имя записи, не null

setSettings

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

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

    Map<String, String> settings = new HashMap<>();
    settings.putAll(EventSettings.enabled("jdk.CPUSample").withPeriod(Duration.ofSeconds(2)).toMap());
    settings.putAll(EventSettings.enabled(MyEvent.class).withThreshold(Duration.ofSeconds(2)).withoutStackTrace().toMap());
    settings.put("jdk.ExecutionSample#period", "10 ms");
    recording.setSettings(settings);
Следующий пример демонстрирует объединение настроек.
    Map<String, String> settings = recording.getSettings();
    settings.putAll(additionalSettings);
    recording.setSettings(settings);
Параметры:
settings - устанавливаемые настройки, не null

getState

public RecordingState getState()
Возвращает состояние записи, в котором в настоящее время находится эта запись.
Возвращает:
состояние записи, не null
См. также:
  • RecordingState

close

public void close()
Освобождает все данные, связанные с этой записью.

После успешного вызова этого метода, эта запись находится в состоянии CLOSED.

Указано в:
close в интерфейсе AutoCloseable
Указано в:
close в интерфейсе Closeable

copy

public Recording copy(boolean stop)
Возвращает копию этой записи с новым идентификатором и именем записи.

Копии полезны для выгрузки данных без остановки записи. После создания копии объём копируемых данных ограничивается методами setMaxAge(Duration) и setMaxSize(long).

Параметры:
stop - true если вновь созданная копия должна быть остановлена немедленно, false в противном случае
Возвращает:
копию записи, не null

dump

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

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

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

isToDisk

public boolean isToDisk()
Возвращает true , если данная запись использует хранилище на диске, false в противном случае.

Если значение не задано, true возвращается.

Возвращает:
true , если запись использует хранилище на диске, false в противном случае

setMaxSize

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

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

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

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

setMaxAge

public void setMaxAge(Duration maxAge)
Определяет, как далеко в прошлом хранятся данные в хранилище на диске.

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

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

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

setDestination

public void setDestination(Path destination) throws IOException
Устанавливает местоположение, куда данные записываются при остановке записи, или null если данные не должны быть выгружены.

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

Если место назначения не установлено, Flight Recorder сохраняет данные записи до тех пор, пока эта запись не будет закрыта. Используйте метод dump(Path) для ручного записи данных в файл.

Параметры:
destination - путь назначения, или null если запись не должна быть выгружена при остановке
Исключения:
IllegalStateException - если запись находится в состоянии STOPPED или CLOSED.
SecurityException - если менеджер безопасности существует и у вызывающего объекта нет FilePermission для чтения, записи и удаления файла destination
IOException - если путь не доступен для записи

getDestination

public Path getDestination()
Возвращает целевой файл, куда записываются данные записи при её остановке, или null если место назначения не задано.
Возвращает:
Целевой файл, или null если не задано.

getId

public long getId()
Возвращает уникальный идентификатор для этой записи.
Возвращает:
Идентификатор записи

setName

public void setName(String name)
Устанавливает удобочитаемое имя (например, "My Recording").
Параметры:
name - имя записи, не null
Исключения:
IllegalStateException - если запись находится в состоянии CLOSED

setDumpOnExit

public void setDumpOnExit(boolean dumpOnExit)
Устанавливает, выгружается ли эта запись на диск при выходе JVM.
Параметры:
dumpOnExit - выгружать ли эту запись при выходе JVM

getDumpOnExit

public boolean getDumpOnExit()
Возвращает, выгружается ли эта запись на диск при выходе JVM.

Если выгрузка при выходе не установлена, false возвращается.

Возвращает:
true если запись выгружается при выходе, false в противном случае.

setToDisk

public void setToDisk(boolean disk)
Определяет, постоянно ли эта запись записывается в хранилище на диске или данные ограничены доступными буферами памяти.
Параметры:
disk - true если эта запись записывается на диск, false если в памяти

getStream

public InputStream getStream(Instant start, Instant end) throws IOException
Создаёт поток данных для указанного интервала.

Поток может содержать некоторые данные за пределами заданного диапазона.

Если запись не на диске, поток создать нельзя и null возвращается.

Параметры:
start - начальное время потока, или null для получения данных с начала записи
end - конечное время потока, или null для получения данных до текущего времени.
Возвращает:
поток ввода, или null если данные в интервале недоступны, или запись не была записана на диск
Исключения:
IllegalArgumentException - если end происходит перед start
IOException - если поток не может быть открыт
См. также:
  • setToDisk(boolean)

getDuration

public Duration getDuration()
Возвращает указанную продолжительность для данной записи, или null если продолжительность не задана.

Продолжительность можно установить только когда запись находится в состоянии RecordingState.NEW.

Возвращает:
желаемая продолжительность записи, или null если продолжительность не была установлена.

setDuration

public void setDuration(Duration duration)
Устанавливает продолжительность записи перед её остановкой.

По умолчанию у записи нет продолжительности (null).

Параметры:
duration - продолжительность, или null если продолжительность не установлена
Исключения:
IllegalStateException - если запись находится в состоянии STOPPED или CLOSED

enable

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

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

Параметры:
name - настройки события, не null
Возвращает:
настройки события для дальнейшей настройки, не null
См. также:
  • EventType

disable

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

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

Параметры:
name - настройки события, не null
Возвращает:
настройки события для дальнейшей настройки, не null

enable

public EventSettings enable(Class<? extends Event> eventClass)
Включает событие.
Параметры:
eventClass - событие для включения, не null
Возвращает:
настройки события для дальнейшей настройки, не null
Исключения:
IllegalArgumentException - если eventClass является абстрактным классом или не является подклассом Event

disable

public EventSettings disable(Class<? extends Event> eventClass)
Отключает событие.
Параметры:
eventClass - событие для включения, не null
Возвращает:
настройки события для дальнейшей настройки, не null
Исключения:
IllegalArgumentException - если eventClass является абстрактным классом или не является подклассом Event

© 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/Recording.html

Spec-Zone.ru

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