Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API планируется удалить в будущей версии.
Метод финализации объявлен устаревшим и будет удален в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ждать до тех пор, пока он не будет разбужен, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ждать до тех пор, пока он не будет разбужен, обычно посредством уведомления или прерывания, либо пока не истечет заданное время.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ждать до тех пор, пока он не будет разбужен, обычно посредством уведомления или прерывания, либо пока не истечет заданное время.

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

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, 2026, 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.

Spec-Zone.ru

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