Spec-Zone.ru › OpenJDK 17

Класс Recording

java.lang.Object
jdk.jfr.Recording
Все реализованные интерфейсы:
Closeable, AutoCloseable
public final class Recording extends Object implements Closeable
Предоставляет средства для настройки, запуска, остановки и записи данных записи на диск.

Следующий пример демонстрирует, как настроить, запустить, остановить и записать данные записи на диск.

   Configuration c = Configuration.getConfiguration("default");
   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()
Останавливает эту запись.

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

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

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

Запись

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

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

Параметры:
settings - настройки в виде карты пар имя-значение, не null
Исключение:
IllegalStateException - если Запись полёта не может быть создана (например, если в Java Virtual Machine (JVM) нет поддержки Записи полёта или если не удаётся создать или получить доступ к хранилищу файлов)
SecurityException - если используется менеджер безопасности и разрешение FlightRecorderPermission "accessFlightRecorder" не установлено.
См. также:
  • jdk.jfr

Запись

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

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

Исключение:
IllegalStateException - если Запись полёта не может быть создана (например, если в Java Virtual Machine (JVM) нет поддержки Записи полёта или если не удаётся создать или получить доступ к хранилищу файлов)
SecurityException - если используется менеджер безопасности и разрешение FlightRecorderPermission "accessFlightRecorder" не установлено.

Запись

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

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

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

Запись должна быть запущена, но не обязательно остановлена.

Параметры:
destination - место, куда записываются данные записи, не null
Исключение:
IOException - если запись не может быть скопирована в указанное местоположение
SecurityException - если существует менеджер безопасности и у вызывающего объекта нет FilePermission для записи в путь назначения

isToDisk

public boolean isToDisk()
Возвращает true если эта запись использует хранилище на диске, false в противном случае.

Если значение не установлено, возвращается true.

Возвращает:
true если запись использует хранилище на диске, false в противном случае

setMaxSize

public void setMaxSize(long maxSize)
Определяет, сколько данных хранится в репозитории диска.

Для управления объёмом данных записи, которые хранятся на диске, можно указать максимальный объём сохраняемых данных. При превышении максимального предела виртуальная машина Java (JVM) удаляет самый старый фрагмент, чтобы освободить место для более нового фрагмента.

Если ни максимальный предел, ни максимальный срок хранения не заданы, размер записи может неограниченно увеличиваться.

Parameters:
maxSize - объём сохраняемых данных, 0 если бесконечный
Throws:
IllegalArgumentException - если maxSize отрицательный
IllegalStateException - если запись находится в состоянии CLOSED

setMaxAge

public void setMaxAge(Duration maxAge)
Определяет, как давно данные хранятся в репозитории диска.

Для управления объёмом записываемых данных, хранящихся на диске, можно указать максимальный срок хранения данных. Данные, хранящиеся на диске, которые старше указанного срока, удаляются виртуальной машиной Java (JVM).

Если ни максимальный предел, ни максимальный срок хранения не заданы, размер записи может неограниченно увеличиваться.

Parameters:
maxAge - продолжительность хранения данных, или null если бесконечная
Throws:
IllegalArgumentException - если maxAge отрицательный
IllegalStateException - если запись находится в состоянии CLOSED

setDestination

public void setDestination(Path destination) throws IOException
Устанавливает местоположение, куда данные записываются при остановке записи, или null если данные не должны быть скопированы.

Если назначение установлено, эта запись автоматически закрывается после успешного копирования данных в путь назначения.

Если назначение не установлено, Flight Recorder сохраняет данные записи до тех пор, пока эта запись не будет закрыта. Используйте метод dump(Path), чтобы вручную записать данные в файл.

Parameters:
destination - путь назначения, или null если запись не должна быть скопирована при остановке
Throws:
IllegalStateException - если запись находится в состоянии STOPPED или CLOSED.
SecurityException - если менеджер безопасности существует и у вызывающего объекта нет FilePermission для чтения, записи и удаления файла destination
IOException - если путь недоступен для записи

getDestination

public Path getDestination()
Возвращает файл назначения, куда записываются данные записи при остановке записи, или null если назначение не установлено.
Returns:
файл назначения, или null если не установлен.

getId

public long getId()
Возвращает уникальный идентификатор для этой записи.
Returns:
идентификатор записи

setName

public void setName(String name)
Устанавливает удобочитаемое имя (например, "My Recording").
Parameters:
name - имя записи, не null
Throws:
IllegalStateException - если запись находится в состоянии CLOSED

setDumpOnExit

public void setDumpOnExit(boolean dumpOnExit)
Устанавливает, записывается ли эта запись на диск при выходе JVM.
Parameters:
dumpOnExit - записывать ли эту запись на диск при выходе JVM

getDumpOnExit

public boolean getDumpOnExit()
Возвращает значение, указывающее, записывается ли эта запись на диск при выходе JVM.

Если запись на диск при выходе не установлена, возвращается false.

Returns:
true если запись записывается на диск при выходе, false в противном случае.

setToDisk

public void setToDisk(boolean disk)
Определяет, записывается ли эта запись непрерывно в репозиторий диска, или данные ограничены доступными буферами памяти.
Parameters:
disk - true если эта запись записывается на диск, false если в памяти

getStream

public InputStream getStream(Instant start, Instant end) throws IOException
Создаёт поток данных для указанного интервала.

Поток может содержать некоторые данные за пределами указанного диапазона.

Если запись не на диске, поток создать нельзя и возвращается null.

Parameters:
start - начальное время для потока, или null чтобы получить данные с начала записи
end - конечное время для потока, или null чтобы получить данные до текущего времени.
Returns:
входной поток, или null если данные недоступны в интервале, или запись не была записана на диск
Throws:
IllegalArgumentException - если end происходит до start
IOException - если поток не может быть открыт
See Also:
  • setToDisk(boolean)

getDuration

public Duration getDuration()
Возвращает заданную продолжительность для этой записи, или null если продолжительность не задана.

Продолжительность можно задать только когда запись находится в состоянии RecordingState.NEW.

Returns:
требуемая продолжительность записи, или null если продолжительность не была установлена.

setDuration

public void setDuration(Duration duration)
Устанавливает продолжительность, в течение которой запись выполняется до остановки.

По умолчанию запись не имеет продолжительности (null).

Parameters:
duration - продолжительность, или null если продолжительность не задана
Throws:
IllegalStateException - если запись находится в состоянии STOPPED или CLOSED

enable

public EventSettings enable(String name)
Включает событие с указанным именем.

Если несколько событий имеют одинаковое имя (например, один и тот же класс загружен в разных загрузчиках классов), все события, соответствующие имени, будут включены. Для включения конкретного класса используйте метод enable(Class) или String представление идентификатора типа события.

Parameters:
name - настройки события, не null
Returns:
настройки события для дальнейшей конфигурации, не null
See Also:
  • EventType

disable

public EventSettings disable(String name)
Отключает событие с указанным именем.

Если несколько событий имеют одинаковое имя (например, один и тот же класс загружен в разных загрузчиках классов), все события, соответствующие имени, будут отключены. Для отключения конкретного класса используйте метод disable(Class) или String представление идентификатора типа события.

Parameters:
name - настройки события, не null
Returns:
настройки события для дальнейшей конфигурации, не null

enable

public EventSettings enable(Class<? extends Event> eventClass)
Включает событие.
Parameters:
eventClass - событие для включения, не null
Returns:
настройки события для дальнейшей конфигурации, не null
Throws:
IllegalArgumentException - если eventClass является абстрактным классом или не является подклассом Event

disable

public EventSettings disable(Class<? extends Event> eventClass)
Отключает событие.
Parameters:
eventClass - событие для отключения, не null
Returns:
настройки события для дальнейшей конфигурации, не null
Throws:
IllegalArgumentException - если eventClass является абстрактным классом или не является подклассом Event

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

Spec-Zone.ru

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