Класс 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() |
Останавливает эту запись. |
Подробное описание конструкторов
Запись
public Recording(Map<String,String> settings)
Новая запись находится в состоянии RecordingState.NEW. Чтобы начать запись, вызовите метод start().
- Параметры:
-
settings- настройки в виде карты пар имя-значение, неnull - Исключения:
-
IllegalStateException- если Flight Recorder не может быть создан (например, если в Java Virtual Machine (JVM) отсутствует поддержка Flight Recorder или если репозиторий файлов не может быть создан или доступен) -
SecurityException- если используется менеджер безопасности и разрешение FlightRecorderPermission "accessFlightRecorder" не установлено. - См. также:
Запись
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" не установлено. - См. также:
Подробное описание методов
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для записи в путь назначения - См. также:
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- если данные записи не могут быть скопированы в указанное местоположение, например, если запись закрыта или путь назначения недоступен для записи -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетFilePermissionдля записи в путь назначения - См. также:
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)
- Параметры:
-
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, 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