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