Интерфейс FlightRecorderMXBean
- Все суперинтерфейсы:
PlatformManagedObject
public interface FlightRecorderMXBean extends PlatformManagedObject
Имя объекта для идентификации MXBean на платформенном сервере MBean:
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 (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 |
Закрывает запись с указанным идентификатором и освобождает все системные ресурсы, связанные с ней. |
void |
closeStream |
Закрывает поток записи с указанным идентификатором и освобождает все системные ресурсы, связанные с потоком. |
void |
copyTo |
Записывает данные записи в указанный файл. |
List |
getConfigurations() |
Возвращает список предварительно заданных конфигураций для этой виртуальной машины Java (JVM). |
List |
getEventTypes() |
Возвращает список зарегистрированных в данный момент типов событий. |
Map |
getRecordingOptions |
Возвращает карту с параметрами записи с указанным идентификатором (например, целевым файлом или периодом хранения записанных данных). |
List |
getRecordings() |
Возвращает список доступных записей, которые не обязательно выполняются в данный момент. |
Map |
getRecordingSettings |
Возвращает Map с настройками записи с указанным идентификатором (например, пороговыми значениями событий). |
long |
newRecording() |
Создает запись, но не запускает ее. |
long |
openStream |
Открывает поток данных для записи с указанным идентификатором или 0, чтобы получать данные независимо от записи. |
byte[] |
readStream |
Читает часть данных из потока с указанным идентификатором или возвращает null, если больше нет доступных данных. |
void |
setConfiguration |
Задает конфигурацию в виде строкового представления для записи с указанным идентификатором. |
void |
setPredefinedConfiguration |
Задает предварительно определенную конфигурацию для записи с указанным идентификатором. |
void |
setRecordingOptions |
Настраивает параметры записи (например, целевой файл и период хранения данных). |
void |
setRecordingSettings |
Задает и заменяет все предыдущие настройки указанной записи. |
void |
startRecording |
Запускает запись с указанным идентификатором. |
boolean |
stopRecording |
Останавливает выполняющуюся запись с указанным идентификатором. |
long |
takeSnapshot() |
Создает запись-снимок всех доступных записанных данных. |
Методы, объявленные в интерфейсе PlatformManagedObject
getObjectName
Подробное описание полей
MXBEAN_NAME
static final String MXBEAN_NAME
ObjectName для FlightRecorderMXBean.- См. также:
Подробное описание методов
newRecording
long newRecording() throws IllegalStateException
- Возвращает:
- уникальный идентификатор, который можно использовать для запуска, остановки, закрытия и настройки записи
- Вызывает исключение:
-
IllegalStateException— если невозможно создать Flight Recorder (например, если в виртуальной машине Java (JVM) отсутствует поддержка Flight Recorder или невозможно создать либо открыть файловый репозиторий) - См. также:
takeSnapshot
long takeSnapshot()
Снимок — это синтезированная запись в остановленном состоянии. Если данные недоступны, возвращается запись размером 0.
Снимок обеспечивает стабильный доступ к данным для последующих операций (например, для изменения временного интервала или уменьшения объема данных).
Вызывающий код должен закрыть запись, когда доступ к данным больше не требуется.
- Возвращает:
- уникальный идентификатор, который можно использовать для чтения данных записи
- См. также:
cloneRecording
long cloneRecording(long recordingId, boolean stop) throws IllegalArgumentException
Клонированная запись содержит те же данные, что и исходная, но имеет новый идентификатор и имя с префиксом "Clone of recording". Если исходная запись выполняется, то клонированная запись также будет выполняться.
- Параметры:
-
recordingId— идентификатор записи, на основе которой создается клон -
stop— следует ли остановить только что созданный клон перед возвратом. - Возвращает:
- уникальный идентификатор, который можно использовать для запуска, остановки, закрытия и настройки записи
- Вызывает исключение:
-
IllegalArgumentException— если запись с указанным идентификатором не существует - См. также:
startRecording
void startRecording(long recordingId) throws IllegalStateException
Остановленную запись нельзя запустить повторно.
- Параметры:
-
recordingId— идентификатор записи, которую нужно запустить - Вызывает исключение:
-
IllegalArgumentException— если запись с указанным идентификатором не существует IllegalStateException- См. также:
stopRecording
boolean stopRecording(long recordingId) throws IllegalArgumentException, IllegalStateException
- Параметры:
-
recordingId— идентификатор записи, которую нужно остановить - Возвращает:
-
true, если запись остановлена, в противном случае —false - Вызывает исключение:
-
IllegalArgumentException— если запись с указанным идентификатором не существует -
IllegalStateException— если запись не выполняется - См. также:
closeRecording
void closeRecording(long recordingId) throws IOException
Если запись уже закрыта, вызов этого метода не имеет эффекта.
- Параметры:
-
recordingId— идентификатор записи, которую нужно закрыть - Вызывает исключение:
-
IllegalArgumentException— если запись с указанным идентификатором не существует -
IOException— если возникает ошибка ввода-вывода - См. также:
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 (JVM) сочтет это значение слишком большим для обработки. |
"50000","1000000", |
streamVersion | Задает формат для чтения данных из выполняющейся записи | "1.0" | Номер версии, состоящий из основной и дополнительной частей. Для чтения данных из выполняющейся записи необходимо задать это значение |
"1.0" |
Запись с указанным идентификатором должна быть остановлена до открытия потока, если не указан параметр "streamVersion".
- Параметры:
-
recordingId— идентификатор записи, для которой нужно открыть поток -
streamOptions— карта, содержащая параметры, управляющие объемом данных и способом их чтения, илиnull, чтобы получить все данные записи с размером блока по умолчанию - Возвращает:
- уникальный идентификатор потока.
- Вызывает исключение:
-
IllegalArgumentException— если запись с указанным идентификатором не существует илиoptionsсодержит недопустимые значения -
IOException— если запись закрыта, возникает ошибка ввода-вывода или для указанной записи либо интервала нет данных
closeStream
void closeStream(long streamId) throws IOException
Если поток уже закрыт, вызов этого метода не имеет эффекта.
- Параметры:
-
streamId— идентификатор потока - Вызывает исключение:
-
IllegalArgumentException— если поток с указанным идентификатором не существует -
IOException— если при попытке закрыть поток возникает ошибка ввода-вывода - См. также:
readStream
byte[] readStream(long streamId) throws IOException
null, если данные закончились. Чтобы прочитать все данные записи, вызывайте этот метод повторно, пока он не вернет null.
- Параметры:
-
streamId— идентификатор потока - Возвращает:
- массив байтов, содержащий данные записи, или
null, если данные закончились - Вызывает исключение:
-
IOException— если поток закрыт или при попытке чтения потока произошла ошибка ввода-вывода -
IllegalArgumentException— если записи с таким идентификатором потока не существует
getRecordingOptions
Map<String,String> getRecordingOptions(long recordingId) throws IllegalArgumentException
Список доступных имен параметров см. в FlightRecorderMXBean.
- Параметры:
-
recordingId— идентификатор записи, параметры которой нужно получить - Возвращает:
- карта с описанием параметров записи, не
null - Вызывает исключение:
-
IllegalArgumentException— если запись с указанным идентификатором не существует
getRecordingSettings
Map<String,String> getRecordingSettings(long recordingId) throws IllegalArgumentException
Map, содержащий настройки записи с указанным идентификатором (например, пороговые значения событий). Если одновременно выполняется несколько записей, может быть записано больше данных, чем указано в объекте Map.
Имя в Map — это имя события и имя настройки, разделенные "#" (например, "jdk.VMInfo#period"). Значение представляет собой текстовое представление значения настройки (например, "60 s").
- Параметры:
-
recordingId— идентификатор записи, настройки которой нужно получить - Возвращает:
- карта с описанием настроек записи, не
null - Вызывает исключение:
-
IllegalArgumentException— если запись с указанным идентификатором не существует
setConfiguration
void setConfiguration(long recordingId, String contents) throws IllegalArgumentException
- Параметры:
-
recordingId— идентификатор записи -
contents— строковое представление используемого файла конфигурации, неnull - Вызывает исключение:
-
IllegalArgumentException— если запись с указанным идентификатором не существует или конфигурацию не удалось разобрать. - См. также:
setPredefinedConfiguration
void setPredefinedConfiguration(long recordingId, String configurationName) throws IllegalArgumentException
- Параметры:
-
recordingId— идентификатор записи, для которой нужно задать конфигурацию -
configurationName— имя конфигурации (например,"profile"или"default"), неnull - Вызывает исключение:
-
IllegalArgumentException— если запись с указанным идентификатором не существует - См. также:
setRecordingSettings
void setRecordingSettings(long recordingId, Map<String,String> settings) throws IllegalArgumentException
Настройка состоит из пары «имя/значение», где имя задает событие и настраиваемый параметр, а значение указывает, какое значение ему присвоить.
Имя можно сформировать следующими способами:
<event-name> + "#" + <setting-name>
или
<event-id> + "#" + <setting-name>
Например, чтобы задать для события загрузки ЦП интервал выборки раз в секунду, используйте имя "jdk.CPULoad#period" и значение "1 s". Если несколько событий используют одно и то же имя (например, если класс события загружен несколькими загрузчиками классов) и их нужно различать, используется имя "56#period". Идентификатор события получается вызовом метода EventType.getId() и действителен для экземпляра виртуальной машины Java (JVM), в котором зарегистрировано событие.
Список доступных имен событий можно получить, вызвав FlightRecorder.getEventTypes() и EventType.getName(). Список доступных настроек для типа события можно получить, вызвав EventType.getSettingDescriptors() и ValueDescriptor.getName().
- Параметры:
-
recordingId— идентификатор записи -
settings— карта имен и значений задаваемых настроек, неnull - Вызывает исключение:
-
IllegalArgumentException— если запись с указанным идентификатором не существует - См. также:
setRecordingOptions
void setRecordingOptions(long recordingId, Map<String,String> options) throws IllegalArgumentException
Описание доступных параметров и значений см. в FlightRecorderMXBean. Присвоение значения null восстанавливает значение по умолчанию.
- Параметры:
-
recordingId— идентификатор записи, параметры которой нужно задать -
options— карта имен и значений задаваемых параметров, неnull - Вызывает исключение:
-
IllegalArgumentException— если запись с указанным идентификатором не существует - См. также:
getRecordings
List<RecordingInfo> getRecordings()
Доступ к MBeanServer:
Сопоставленный тип RecordingInfo — это CompositeData с атрибутами, указанными в методе RecordingInfo.from.
- Возвращает:
- список записей, не
null - См. также:
getConfigurations
List<ConfigurationInfo> getConfigurations()
Доступ к MBeanServer:
Сопоставленный тип ConfigurationInfo — это CompositeData с атрибутами, указанными в методе ConfigurationInfo.from.
- Возвращает:
- список предварительно определенных конфигураций, не
null - См. также:
getEventTypes
List<EventTypeInfo> getEventTypes()
Доступ к MBeanServer:
Сопоставленный тип EventTypeInfo — это CompositeData с атрибутами, указанными в методе EventTypeInfo.from.
- Возвращает:
- список зарегистрированных типов событий, не
null - См. также:
copyTo
void copyTo(long recordingId, String outputFile) throws IOException
Если этот метод вызывается удаленно из другого процесса, данные записываются в файл с именем outputFile на компьютере, где выполняется целевая виртуальная машина Java (JVM). Если путь к файлу относительный, он задается относительно рабочего каталога, из которого была запущена целевая JVM.
- Параметры:
-
recordingId— идентификатор записи, данные которой нужно выгрузить -
outputFile— зависящее от системы имя файла, в который записываются данные, неnull - Вызывает исключение:
-
IOException— если запись не удается выгрузить из-за ошибки ввода-вывода (например, из-за недопустимого пути) -
IllegalArgumentException— если запись с указанным идентификатором не существует -
IllegalStateException— если запись еще не запущена или уже закрыта - См. также:
© 1993, 2025, 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/25/docs/api/jdk.management.jfr/jdk/management/jfr/FlightRecorderMXBean.html