Spec-Zone.ru › OpenJDK 25

Класс 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()
Останавливает эту запись.

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

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

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

Recording

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

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

Параметры:
settings — настройки в виде карты пар «имя — значение», не null
Исключения:
IllegalStateException — если не удается создать Flight Recorder (например, если в виртуальной машине Java (JVM) отсутствует поддержка Flight Recorder или невозможно создать либо получить доступ к файловому хранилищу)
Начиная с:
11
См. также:
  • jdk.jfr

Recording

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

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

Исключения:
IllegalStateException — если не удается создать Flight Recorder (например, если в виртуальной машине Java (JVM) отсутствует поддержка Flight Recorder или невозможно создать либо получить доступ к файловому хранилищу)

Recording

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

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/jdk.jfr/jdk/jfr/Recording.html

Spec-Zone.ru

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