Интерфейс 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 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"
|
- Since:
- 9
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
MXBEAN_NAME |
Строковое представление ObjectName для FlightRecorderMXBean. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
long |
cloneRecording |
Создает копию существующей записи, полезно для извлечения частей записи. |
void |
closeRecording |
Закрывает запись с указанным ID и высвобождает все системные ресурсы, связанные с записью. |
void |
closeStream |
Закрывает поток записи с указанным ID и высвобождает все системные ресурсы, связанные с потоком. |
void |
copyTo |
Записывает данные записи в указанный файл. |
List<ConfigurationInfo> |
getConfigurations() |
Возвращает список предварительно определенных конфигураций для этой Java Virtual Machine (JVM). |
List<EventTypeInfo> |
getEventTypes() |
Возвращает список текущих зарегистрированных типов событий. |
Map<String, |
getRecordingOptions |
Возвращает карту, содержащую параметры записи с указанным ID (например, целевой файл или временной интервал для хранения записанных данных). |
List<RecordingInfo> |
getRecordings() |
Возвращает список доступных записей, необязательно запущенных. |
Map<String, |
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 (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 (JVM). Если путь к файлу относительный, он относительный к рабочему каталогу, в котором была запущена целевая JVM.
- Parameters:
-
recordingId- идентификатор записи, для которой необходимо скопировать данные -
outputFile- имя файла, в который записываются данные, неnull - Throws:
-
IOException- если запись не может быть скопирована из-за ошибки ввода-вывода (например, неверный путь) -
IllegalArgumentException- если запись с указанным идентификатором не существует -
IllegalStateException- если запись ещё не начата или уже закрыта -
SecurityException- если существует менеджер безопасности, и его методSecurityManager.checkWrite(java.lang.String)запрещает запись в указанный файл или у вызывающего объекта нетManagmentPermission("control") - See Also:
© 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.management.jfr/jdk/management/jfr/FlightRecorderMXBean.html