Класс 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 |
Создает запись с настройками из карты пар имя-значение. |
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<String, |
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- если Запись полёта не может быть создана (например, если в Java Virtual Machine (JVM) нет поддержки Записи полёта или если не удаётся создать или получить доступ к хранилищу файлов) -
SecurityException- если используется менеджер безопасности и разрешение FlightRecorderPermission "accessFlightRecorder" не установлено. - См. также:
Запись
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" не установлено. - См. также:
Подробное описание методов
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
Запись должна быть запущена, но не обязательно остановлена.
- Параметры:
-
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)
- Parameters:
-
dumpOnExit- записывать ли эту запись на диск при выходе JVM
getDumpOnExit
public boolean getDumpOnExit()
Если запись на диск при выходе не установлена, возвращается 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:
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:
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