Интерфейс FlightRecorderMXBean
- Все суперинтерфейсы:
PlatformManagedObject
public interface FlightRecorderMXBean extends PlatformManagedObject
Имя объекта для идентификации MXBean в сервере управления платформы:
jdk.management.jfr:type=FlightRecorder Flight Recorder можно настроить следующим образом:
-
Параметры записи
Укажите, как долго должна длиться запись, и куда и когда данные должны быть записаны. -
Настройки
Укажите, какие события должны быть включены и какую информацию должно собирать каждое событие. -
Конфигурации
Предопределенные наборы настроек, обычно полученные из файла настроек, которые одновременно задают конфигурацию нескольких событий.
См. документацию пакета jdk.jfr для описания синтаксиса настроек и документацию класса ConfigurationInfo для информации о конфигурации.
Параметры записи
В следующей таблице показаны имена параметров, которые необходимо использовать с setRecordingOptions(long, Map) и getRecordingOptions(long).
| Имя | Описание | Значение по умолчанию | Формат | Примеры значений |
|---|---|---|---|---|
name | Устанавливает удобочитаемое имя записи | Строковое представление идентификатора записи | String |
"My Recording", "profiling"
|
maxAge | Укажите длительность хранения данных в хранилище на диске до удаления самых старых данных. Работает только если disk=true, в противном случае этот параметр игнорируется. |
"0" (нет ограничения) |
"0" если ограничения нет, иначе строковое представление положительного Long значения, за которым следует пробел и одна из следующих единиц измерения:"ns" (наносекунды)"us" (микросекунды)"ms" (миллисекунды)"s" (секунды)"m" (минуты)"h" (часы)"d" (дни) |
"2 h","24 h","2 d","0"
|
maxSize | Указывает размер, измеряемый в байтах, при котором данные сохраняются в хранилище на диске. Работает только если disk=true, в противном случае этот параметр игнорируется. |
"0" (нет ограничения) | Строковое представление значения Long, должно быть положительным |
"0", "1000000000"
|
dumpOnExit | Записывает данные записи на диск при выходе Java Virtual Machine (JVM) | "false" | Строковое представление значения Boolean, "true" или "false"
|
"true","false"
|
destination | Указывает путь, куда записываются данные записи при остановке записи. | "false" | См. Paths#getPath для формата. Если этот метод вызывается из другого процесса, данные записываются на машине, где запущен целевой JVM. Если путь является относительным, он относительный к рабочей директории, где был запущен целевой JVM. |
"c:\recording\recotding.jfr","/recordings/recording.jfr", "recording.jfr"
|
disk | Хранит записанные данные по мере их записи | "false" | Строковое представление значения Boolean, "true" или "false"
|
"true","false"
|
duration | Устанавливает длительность записи |
"0" (без ограничения, непрерывно) |
"0" если ограничения нет, иначе строковое представление положительного Long значения, за которым следует пробел и одна из следующих единиц измерения:"ns" (наносекунды)"us" (микросекунды)"ms" (миллисекунды)"s" (секунды)"m" (минуты)"h" (часы)"d" (дни) |
"60 s","10 m","4 h","0"
|
- С:
- 9
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
MXBEAN_NAME |
Строковое представление ObjectName для FlightRecorderMXBean. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
long |
cloneRecording |
Создает копию существующей записи, полезно для извлечения частей записи. |
void |
closeRecording |
Закрывает запись с указанным ID и освобождает все системные ресурсы, связанные с записью. |
void |
closeStream |
Закрывает поток записи с указанным ID и освобождает все системные ресурсы, связанные с потоком. |
void |
copyTo |
Записывает данные записи в указанный файл. |
List |
getConfigurations() |
Возвращает список предопределенных конфигураций для данной Java Virtual Machine (JVM). |
List |
getEventTypes() |
Возвращает список текущих зарегистрированных типов событий. |
Map |
getRecordingOptions |
Возвращает карту, содержащую параметры записи с указанным ID (например, целевой файл или срок хранения записанных данных). |
List |
getRecordings() |
Возвращает список доступных записей, не обязательно выполняющихся. |
Map |
getRecordingSettings |
Возвращает Map, содержащий настройки записи с указанным ID (например, пороги событий) |
long |
newRecording() |
Создает запись, но не запускает ее. |
long |
openStream |
Открывает поток данных для записи с указанным ID или 0 для получения данных независимо от записи. |
byte[] |
readStream |
Считывает часть данных из потока с указанным ID или возвращает null , если больше данных нет. |
void |
setConfiguration |
Устанавливает конфигурацию как строковое представление для записи с указанным ID. |
void |
setPredefinedConfiguration |
Устанавливает предопределенную конфигурацию для записи с указанным ID. |
void |
setRecordingOptions |
Настраивает параметры записи (например, целевой файл и срок хранения данных). |
void |
setRecordingSettings |
Устанавливает и заменяет все предыдущие настройки для указанной записи. |
void |
startRecording |
Запускает запись с указанным ID. |
boolean |
stopRecording |
Останавливает выполняющуюся запись с указанным ID. |
long |
takeSnapshot() |
Создает моментальный снимок записи всех доступных записанных данных. |
Методы, объявленные в интерфейсе java.lang.management.PlatformManagedObject
getObjectName
Подробное описание полей
MXBEAN_NAME
static final String MXBEAN_NAME
ObjectName для FlightRecorderMXBean.- См. также:
Подробное описание методов
newRecording
long newRecording() throws IllegalStateException, SecurityException
- Возвращает:
- уникальный идентификатор, который может быть использован для запуска, остановки, закрытия и конфигурирования записи
- Исключение:
-
IllegalStateException- если Flight Recorder не может быть создан (например, если в Java Virtual Machine (JVM) отсутствует поддержка Flight Recorder, или если репозиторий файлов не может быть создан или доступен) -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетManagementPermission("control") - См. также:
takeSnapshot
long takeSnapshot()
Моментальный снимок — это синтезированная запись в состоянии остановки. Если данные недоступны, возвращается запись размером 0.
Моментальный снимок обеспечивает стабильный доступ к данным для последующих операций (например, операций изменения временного интервала или уменьшения размера данных).
Вызывающий объект должен закрыть запись, когда доступ к данным больше не нужен.
- Возвращает:
- уникальный идентификатор, который может быть использован для чтения данных записи
- Исключение:
-
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетManagementPermission("control") - См. также:
cloneRecording
long cloneRecording(long recordingId, boolean stop) throws IllegalArgumentException, SecurityException
Скопированная запись содержит те же данные записи, что и оригинал, но имеет новый идентификатор и имя, начинающееся с префикса "Clone of recording". Если исходная запись запущена, то и копия также запущена.
- Параметры:
-
recordingId- идентификатор записи, для которой создать копию -
stop- если новая скопированная запись останавливается перед возвратом. - Возвращает:
- уникальный идентификатор, который может быть использован для запуска, остановки, закрытия и конфигурирования записи
- Исключение:
-
IllegalArgumentException- если записи с указанным идентификатором не существует -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетManagementPermission("control") - См. также:
startRecording
void startRecording(long recordingId) throws IllegalStateException, SecurityException
Остановленная запись не может быть перезапущена.
- Параметры:
-
recordingId- идентификатор записи для запуска - Исключение:
-
IllegalArgumentException- если записи с указанным идентификатором не существует -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетManagementPermission("control") IllegalStateException- См. также:
stopRecording
boolean stopRecording(long recordingId) throws IllegalArgumentException, IllegalStateException, SecurityException
- Параметры:
-
recordingId- идентификатор записи для остановки - Возвращает:
-
trueесли запись остановлена,falseв противном случае - Исключение:
-
IllegalArgumentException- если записи с указанным идентификатором не существует -
IllegalStateException- если запись не запущена -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетManagementPermission("control") - См. также:
closeRecording
void closeRecording(long recordingId) throws IOException
Если запись уже закрыта, вызов этого метода не оказывает никакого эффекта.
- Параметры:
-
recordingId- идентификатор записи для закрытия - Исключение:
-
IllegalArgumentException- если записи с указанным идентификатором не существует -
IOException- если произошла ошибка ввода-вывода -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетManagementPermission("control") - См. также:
openStream
long openStream(long recordingId, Map<String,String> streamOptions) throws IOException
0 для получения данных независимо от записи. | Имя | Описание | Значение по умолчанию | Формат | Примеры значений |
|---|---|---|---|---|
startTime | Указывает момент времени начала потока записи. Из-за способа хранения данных, некоторые события, начинающиеся или заканчивающиеся до времени начала, могут быть включены. | Instant.MIN_VALUE.toString() | ISO-8601. См. Instant.toString()или миллисекунды с момента эпохи |
"2015-11-03T00:00","1446508800000"
|
endTime | Указывает момент времени окончания потока записи. Из-за способа хранения данных, некоторые события, начинающиеся или заканчивающиеся после времени окончания, могут быть включены. | Instant.MAX_VALUE.toString() | ISO-8601. См. Instant.toString() или миллисекунды с момента эпохи |
"2015-11-03T01:00", "1446512400000"
|
blockSize | Указывает максимальное количество байтов для чтения при вызове readStream | "50000" | Положительное long значение. Установка blockSize к очень большому значению может привести к OutOfMemoryError или IllegalArgumentException, если Java Virtual Machine (JVM) посчитает значение слишком большим для обработки. |
"50000","1000000", |
streamVersion | Указывает формат для использования при чтении данных из запущенной записи | "1.0" | Номер версии с основной и дополнительной частью. Для возможности чтения из запущенной записи значение должно быть установлено |
"1.0" |
Запись с указанным идентификатором должна быть остановлена перед открытием потока, если параметр "streamVersion" не указан.
- Параметры:
-
recordingId- идентификатор записи для открытия потока -
streamOptions- карта, содержащая параметры, которые управляют количеством данных и способом их чтения, илиnullдля получения всех данных для записи с размером блока по умолчанию - Возвращает:
- уникальный идентификатор для потока.
- Исключение:
-
IllegalArgumentException- если запись с указанным идентификатором не существует илиoptionsсодержит недопустимые значения -
IOException- если запись закрыта, произошла ошибка ввода-вывода или данные недоступны для указанной записи или интервала -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетManagementPermission("control")
closeStream
void closeStream(long streamId) throws IOException
Если поток уже закрыт, вызов этого метода не оказывает никакого эффекта.
- Параметры:
-
streamId- идентификатор потока - Исключение:
-
IllegalArgumentException- если поток с указанным идентификатором не существует -
IOException- если при попытке закрытия потока произошла ошибка ввода-вывода -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетManagementPermission("control") - См. также:
readStream
byte[] readStream(long streamId) throws IOException
null если больше данных недоступно. Чтобы прочитать все данные записи, вызывайте этот метод повторно, пока не будет возвращено null.
- Параметры:
-
streamId- идентификатор потока - Возвращает:
- массив байтов, содержащий данные записи, или
nullкогда больше данных недоступно - Исключение:
-
IOException- если поток закрыт или при попытке чтения потока произошла ошибка ввода-вывода -
IllegalArgumentException- если записи с идентификатором потока не существует -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетManagementPermission("monitor")
getRecordingOptions
Map<String,String> getRecordingOptions(long recordingId) throws IllegalArgumentException
См. FlightRecorderMXBean для доступных имён параметров.
- Parameters:
-
recordingId- идентификатор записи, для которой нужно получить параметры - Returns:
- карта, описывающая параметры записи, не
null - Throws:
-
IllegalArgumentException- если запись с указанным идентификатором не существует -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетManagementPermission("monitor")
getRecordingSettings
Map<String,String> getRecordingSettings(long recordingId) throws IllegalArgumentException
Map, содержащую настройки записи с указанным идентификатором (например, пороговые значения событий) Если одновременно выполняется несколько записей, может быть записано больше данных, чем указано в объекте Map.
Имя в Map — это имя события и имя настройки, разделённые "#" (например, "jdk.VMInfo#period"). Значение — текстовое представление значения настройки (например, "60 s").
- Parameters:
-
recordingId- идентификатор записываемых событий, для которых требуется получить настройки - Returns:
- карта, описывающая настройки записи, не
null - Throws:
-
IllegalArgumentException- если запись с указанным идентификатором не существует -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетManagementPermission("monitor")
setConfiguration
void setConfiguration(long recordingId, String contents) throws IllegalArgumentException
- Parameters:
-
recordingId- идентификатор записи -
contents- строковое представление конфигурационного файла для использования, неnull - Throws:
-
IllegalArgumentException- если запись с указанным идентификатором не существует или конфигурация не может быть обработана. -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетManagementPermission("control") - See Also:
setPredefinedConfiguration
void setPredefinedConfiguration(long recordingId, String configurationName) throws IllegalArgumentException
- Parameters:
-
recordingId- идентификатор записи, для которой нужно установить конфигурацию -
configurationName- имя конфигурации (например,"profile"или"default"), неnull - Throws:
-
IllegalArgumentException- если запись с указанным идентификатором не существует -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетManagementPermission("control") - See Also:
setRecordingSettings
void setRecordingSettings(long recordingId, Map<String,String> settings) throws IllegalArgumentException
Настройка состоит из пары "имя/значение", где имя указывает событие и настройку для конфигурации, а значение указывает, на что её установить.
Имя может быть сформировано следующими способами:
<event-name> + "#" + <setting-name>
или
<event-id> + "#" + <setting-name>
Например, чтобы установить интервал выборки события CPU Load один раз в секунду, используйте имя "jdk.CPULoad#period" и значение "1 s". Если несколько событий используют одно и то же имя, например, если тип события загружен в нескольких загрузчиках классов, и требуется различие между ними, то имя имеет вид "56#period". Идентификатор события получается путём вызова метода EventType.getId() и является действительным для экземпляра Java Virtual Machine (JVM), в котором зарегистрировано событие.
Список доступных имён событий извлекается путём вызова FlightRecorder.getEventTypes() и EventType.getName(). Список доступных настроек для типа события получается путём вызова EventType.getSettingDescriptors() и ValueDescriptor.getName().
- Parameters:
-
recordingId- идентификатор записи -
settings- карта имя-значение настроек для установки, неnull - Throws:
-
IllegalArgumentException- если запись с указанным идентификатором не существует -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетManagementPermission("control") - See Also:
setRecordingOptions
void setRecordingOptions(long recordingId, Map<String,String> options) throws IllegalArgumentException
См. FlightRecorderMXBean для описания параметров и значений, которые можно использовать. Установка значения в null восстанавливает значение до значения по умолчанию.
- Parameters:
-
recordingId- идентификатор записи, для которой нужно установить параметры -
options- карта имя/значение настроек для установки, неnull - Throws:
-
IllegalArgumentException- если запись с указанным идентификатором не существует -
SecurityException- если менеджер безопасности существует, и у вызывающего объекта нетManagementPermission("control")или параметр содержит файл, на который у вызывающего объекта нет разрешения для работы. - See Also:
getRecordings
List<RecordingInfo> getRecordings()
Доступ к MBeanServer:
Тип отображения RecordingInfo — CompositeData с атрибутами, как указано в методе RecordingInfo.from.
- Returns:
- список записей, не
null - Throws:
-
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетManagementPermission("monitor") - See Also:
getConfigurations
List<ConfigurationInfo> getConfigurations()
Доступ к MBeanServer:
Тип отображения ConfigurationInfo — CompositeData с атрибутами, как указано в методе ConfigurationInfo.from.
- Returns:
- список предопределённых конфигураций, не
null - Throws:
-
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетManagementPermission("monitor") - See Also:
getEventTypes
List<EventTypeInfo> getEventTypes()
Доступ к MBeanServer:
Тип отображения EventTypeInfo — CompositeData с атрибутами, как указано в методе EventTypeInfo.from.
- Returns:
- список зарегистрированных типов событий, не
null - Throws:
-
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетManagementPermission("monitor") - See Also:
copyTo
void copyTo(long recordingId, String outputFile) throws IOException, SecurityException
Если этот метод вызывается удалённо из другого процесса, данные записываются в файл с именем outputFile на компьютере, где выполняется целевая Java Virtual Machine (JVM). Если расположение файла — относительный путь, то он относительный к рабочей директории, где была запущена целевая JVM.
- Parameters:
-
recordingId- идентификатор записи, для которой требуется получить данные -
outputFile- зависящее от системы имя файла, куда записываются данные, неnull - Throws:
-
IOException- если запись не может быть скопирована из-за ошибки ввода-вывода (например, неверный путь) -
IllegalArgumentException- если запись с указанным идентификатором не существует -
IllegalStateException- если запись ещё не начата или уже закрыта -
SecurityException- если менеджер безопасности существует и его методSecurityManager.checkWrite(java.lang.String)запрещает запись в указанный файл или у вызывающего объекта нетManagmentPermission("control") - See Also:
© 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.management.jfr/jdk/management/jfr/FlightRecorderMXBean.html