Класс 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 |
Создает запись с настройками из карты пар «имя — значение». |
Recording |
Создает запись с настройками из конфигурации. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Освобождает все данные, связанные с этой записью. |
Recording |
copy |
Возвращает копию этой записи с новым идентификатором и именем. |
EventSettings |
disable |
Отключает событие. |
EventSettings |
disable |
Отключает событие с указанным именем. |
void |
dump |
Записывает данные записи в файл. |
EventSettings |
enable |
Включает событие. |
EventSettings |
enable |
Включает событие с указанным именем. |
Path |
getDestination() |
Возвращает файл назначения, в который записываются данные записи при остановке записи, или null, если назначение не задано. |
boolean |
getDumpOnExit() |
Возвращает, сохраняется ли эта запись на диск при завершении работы JVM. |
Duration |
getDuration() |
Возвращает заданную продолжительность этой записи или null, если продолжительность не задана. |
long |
getId() |
Возвращает уникальный идентификатор этой записи. |
Duration |
getMaxAge() |
Возвращает время хранения данных в дисковом хранилище до их удаления. |
long |
getMaxSize() |
Возвращает максимальный размер в байтах, при превышении которого данные больше не хранятся в дисковом хранилище. |
String |
getName() |
Возвращает имя этой записи. |
Map |
getSettings() |
Возвращает настройки, используемые этой записью. |
long |
getSize() |
Возвращает текущий размер этой записи в дисковом хранилище в байтах. |
Instant |
getStartTime() |
Возвращает время начала этой записи. |
RecordingState |
getState() |
Возвращает текущее состояние этой записи. |
Instant |
getStopTime() |
Возвращает время остановки этой записи. |
InputStream |
getStream |
Создает поток данных для указанного интервала. |
boolean |
isToDisk() |
Возвращает true, если эта запись использует дисковое хранилище, и false в противном случае. |
void |
scheduleStart |
Запускает эту запись с задержкой. |
void |
setDestination |
Задает расположение для записи данных при остановке записи или null, если данные не следует сохранять. |
void |
setDumpOnExit |
Задает, следует ли сохранять эту запись на диск при завершении работы JVM. |
void |
setDuration |
Задает продолжительность работы записи до ее остановки. |
void |
setMaxAge |
Определяет, за какой период времени сохраняются данные в дисковом хранилище. |
void |
setMaxSize |
Определяет, какой объем данных хранится в дисковом хранилище. |
void |
setName |
Задает понятное человеку имя (например, "My Recording"). |
void |
setSettings |
Заменяет все настройки этой записи. |
void |
setToDisk |
Определяет, непрерывно ли данные сбрасываются в дисковое хранилище или их объем ограничен тем, что доступно в буферах памяти. |
void |
start() |
Запускает эту запись. |
boolean |
stop() |
Останавливает эту запись. |
Подробное описание конструкторов
Recording
public Recording(Map<String,String> settings)
Новая запись находится в состоянии RecordingState.NEW. Чтобы запустить запись, вызовите метод start().
- Параметры:
-
settings— настройки в виде карты пар «имя — значение», неnull - Исключения:
-
IllegalStateException— если не удается создать Flight Recorder (например, если в виртуальной машине Java (JVM) отсутствует поддержка Flight Recorder или невозможно создать либо получить доступ к файловому хранилищу) - Начиная с:
- 11
- См. также:
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 или невозможно создать либо получить доступ к файловому хранилищу) - См. также:
Подробное описание методов
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— если запись не запущена или уже остановлена - См. также:
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 - См. также:
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— если не удается скопировать данные записи в указанное расположение, например, если запись закрыта или путь назначения недоступен для записи - См. также:
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)
- Параметры:
-
dumpOnExit— следует ли сохранять эту запись при завершении работы JVM
getDumpOnExit
public boolean getDumpOnExit()
Если сохранение при завершении работы не задано, возвращается 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— если не удается открыть поток - См. также:
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 - См. также:
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, 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