Класс Запись
- 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.copyTo(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() | Возвращает целевой файл, в который записываются данные записи при остановке записи, или |
boolean | getDumpOnExit() | Возвращает, выгружается ли эта запись на диск при завершении JVM. |
Duration | getDuration() | Возвращает заданную длительность для этой записи, или |
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() | Возвращает |
void | scheduleStart(Duration delay) | Запускает эту запись после задержки. |
void | setDestination(Path destination) | Устанавливает местоположение, куда данные записываются при остановке записи, или |
void | setDumpOnExit(boolean dumpOnExit) | Устанавливает, выгружается ли эта запись на диск при завершении JVM. |
void | setDuration(Duration duration) | Устанавливает длительность работы записи перед её остановкой. |
void | setMaxAge(Duration maxAge) | Определяет, насколько далеко в хранилище на диске сохраняются данные. |
void | setMaxSize(long maxSize) | Определяет, сколько данных хранится в хранилище на диске. |
void | setName(String name) | Устанавливает удобочитаемое имя (например, |
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)
Запись
public Recording()
Создает запись без каких-либо настроек.
Новосозданная запись находится в состоянии RecordingState.NEW. Чтобы запустить запись, вызовите метод start().
- Исключения:
-
IllegalStateException- если Flight Recorder не может быть создан (например, если в виртуальной машине Java (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 (JVM) отсутствует поддержка Flight Recorder, или если хранилище файлов не может быть создано или обработано) -
SecurityException- если используется менеджер безопасности, а разрешение FlightRecorderPermission "accessFlightRecorder" не установлено. - См. также:
Configuration
Методы
start
public void start()
Запускает это запись.
Рекомендуется настроить параметры записи и параметры событий перед вызовом этого метода. Преимущества этого заключаются в более согласованном состоянии при анализе записанных данных и улучшенной производительности, поскольку конфигурация может применяться атомарно.
После успешного вызова этого метода эта запись находится в состоянии RUNNING.
- Throws:
-
IllegalStateException- если запись уже запущена или находится в состоянииCLOSED
scheduleStart
public void scheduleStart(Duration delay)
Запускает эту запись после задержки.
После успешного вызова этого метода эта запись находится в состоянии DELAYED.
- Parameters:
-
delay- время ожидания перед запуском этой записи, неnull - Throws:
-
IllegalStateException- если запись не находится в состоянииNEW
stop
public boolean stop()
Останавливает эту запись.
Когда запись остановлена, ее нельзя перезапустить. Если у этой записи есть место назначения, данные записываются в это место назначения, и запись закрывается. После закрытия записи данные больше недоступны.
После успешного вызова этого метода эта запись будет находиться в состоянии STOPPED.
- Returns:
-
trueесли запись остановлена,falseв противном случае - Throws:
-
IllegalStateException- если запись не запущена или уже остановлена -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетFilePermissionдля записи в путь назначения - See Also:
setDestination(Path)
getSettings
public Map<String,String> getSettings()
Возвращает настройки, используемые этой записью.
Изменение возвращенных Map не изменит настройки для этой записи.
Если для этой записи не установлены настройки, возвращается пустой Map.
- Returns:
- настройки записи, не
null
getSize
public long getSize()
Возвращает текущий размер этой записи в хранилище на диске, измеренный в байтах.
Размер обновляется при сбросе буферов записи. Если запись не записывается в хранилище на диске, возвращаемый размер всегда 0.
- Returns:
- объем записанных данных, измеренный в байтах, или
0если запись не записывается в хранилище на диске
getStopTime
public Instant getStopTime()
Возвращает время, когда эта запись была остановлена.
- Returns:
- время, или
nullесли эта запись не остановлена
getStartTime
public Instant getStartTime()
Возвращает время, когда эта запись была запущена.
- Returns:
- время, или
nullесли эта запись не запущена
getMaxSize
public long getMaxSize()
Возвращает максимальный размер, измеренный в байтах, по достижении которого данные больше не сохраняются в хранилище на диске.
- Returns:
- максимальный размер в байтах, или
0если максимальный размер не установлен
getMaxAge
public Duration getMaxAge()
Возвращает продолжительность времени, в течение которого данные хранятся в хранилище на диске, прежде чем они будут удалены.
- Returns:
- максимальная продолжительность времени, или
nullесли максимальная продолжительность времени не была установлена
getName
public String getName()
Возвращает имя этой записи.
По умолчанию имя совпадает с идентификатором записи.
- Returns:
- имя записи, не
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);- Parameters:
-
settings- настройки для установки, неnull
getState
public RecordingState getState()
Возвращает состояние записи, в котором находится эта запись в данный момент.
- Returns:
- состояние записи, не
null - See Also:
RecordingState
close
public void close()
Освобождает все данные, связанные с этой записью.
После успешного вызова этого метода эта запись находится в состоянии CLOSED.
- Specified by:
-
closeв интерфейсеAutoCloseable - Specified by:
-
closeв интерфейсеCloseable
copy
public Recording copy(boolean stop)
Возвращает копию этой записи с новым идентификатором и именем записи. Копии полезны для выгрузки данных без остановки записи. После создания копии объем копируемых данных ограничивается методом setMaxAge(Duration) и методом setMaxSize(long).
- Parameters:
-
stop-trueесли вновь созданная копия должна быть остановлена немедленно,falseв противном случае - Returns:
- копию записи, не
null
dump
public void dump(Path destination)
throws IOException Записывает данные записи в файл.
Запись должна быть запущена, но не обязательно остановлена.
- Parameters:
-
destination- местоположение, куда записываются данные записи, неnull - Throws:
-
IOException- если запись не может быть скопирована в указанное местоположение -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетFilePermissionдля записи в путь назначения
isToDisk
public boolean isToDisk()
Возвращает true если эта запись использует хранилище на диске, false в противном случае.
Если значение не установлено, возвращается true.
- Returns:
-
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)
Определяет, записывается ли данное событие непрерывно в хранилище на диске или данные ограничены буферами оперативной памяти.
- Параметры:
-
disk-trueесли данная запись сохраняется на диск,falseесли в памяти
getStream
public InputStream getStream(Instant start,
Instant end)
throws IOException Создаёт поток данных для указанного интервала.
Поток может содержать некоторые данные за пределами указанного диапазона.
- Параметры:
-
the- начальное время потока, илиnullдля получения данных с момента начала записи -
the- конечное время потока, или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 - См. также:
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
© 1993, 2020, 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/11/docs/api/jdk.jfr/jdk/jfr/Recording.html