Класс ManagementFactory
public class ManagementFactory extends Object
ManagementFactory — это фабричный класс для получения управляемых компонентов платформы Java. Этот класс состоит из статических методов, каждый из которых возвращает один или несколько платформенных MXBean, представляющих интерфейс управления компонентом виртуальной машины Java. Платформенные MXBean
Платформенный MXBean — это управляемый компонент, соответствующий Спецификации инструментирования JMX и использующий только набор основных типов данных. Приложение управления JMX и платформенный MBeanServer могут взаимодействовать без необходимости в классах для специфичных для MXBean типов данных. Типы данных, передаваемые между сервером соединителя JMX и клиентом соединителя, являются открытыми типами, что обеспечивает взаимодействие между версиями. Подробности см. в спецификации MXBean.
Каждый платформенный MXBean является PlatformManagedObject и имеет уникальный ObjectName для регистрации в платформенном MBeanServer, возвращаемый методом getObjectName.
Приложение может получить доступ к платформенному MXBean следующими способами:
1. Прямой доступ к интерфейсу MXBean
- Получить экземпляр MXBean, вызвав метод
getPlatformMXBeanилиgetPlatformMXBeans, и получить локальный доступ к MXBean в работающей виртуальной машине. - Создать прокси-экземпляр MXBean, перенаправляющий вызовы методов заданному
MBeanServer, вызвав методgetPlatformMXBean(MBeanServerConnection, Class)илиgetPlatformMXBeans(MBeanServerConnection, Class). МетодnewPlatformMXBeanProxyтакже можно использовать для создания прокси-экземпляра MXBean заданногоObjectName. Прокси обычно создают для удалённого доступа к MXBean другой работающей виртуальной машины.
2. Косвенный доступ к интерфейсу MXBean через MBeanServer
- Для локального доступа к MXBean используйте платформенный
MBeanServer, а для удалённого доступа к MXBean — конкретныйMBeanServerConnection. Атрибуты и операции MXBean используют только открытые типы JMX, включая основные типы данных,CompositeDataиTabularData, определённые вOpenType. Подробное описание сопоставления приведено в спецификации MXBean.
Метод getPlatformManagementInterfaces возвращает все интерфейсы управления, поддерживаемые в виртуальной машине Java, включая стандартные интерфейсы управления, перечисленные в таблицах ниже, а также интерфейсы управления, расширенные реализацией JDK.
Виртуальная машина Java имеет по одному экземпляру следующих интерфейсов управления:
Виртуальная машина Java может иметь ноль или один экземпляр следующих интерфейсов управления.
| Интерфейс управления | ObjectName |
|---|---|
CompilationMXBean | java.lang:type=Compilation
|
Виртуальная машина Java может иметь один или несколько экземпляров следующих интерфейсов управления.
| Интерфейс управления | ObjectName |
|---|---|
GarbageCollectorMXBean | java.lang:type=GarbageCollector,name=имя сборщика
|
MemoryManagerMXBean | java.lang:type=MemoryManager,name=имя менеджера
|
MemoryPoolMXBean | java.lang:type=MemoryPool,name=имя пула
|
BufferPoolMXBean | java.nio:type=BufferPool,name=имя пула
|
- Начиная с:
- 1.5
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
CLASS_LOADING_MXBEAN_NAME |
Строковое представление ObjectName для ClassLoadingMXBean. |
static final String |
COMPILATION_MXBEAN_NAME |
Строковое представление ObjectName для CompilationMXBean. |
static final String |
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE |
Имя домена и свойство ключа типа в ObjectName для GarbageCollectorMXBean. |
static final String |
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE |
Имя домена и свойство ключа типа в ObjectName для MemoryManagerMXBean. |
static final String |
MEMORY_MXBEAN_NAME |
Строковое представление ObjectName для MemoryMXBean. |
static final String |
MEMORY_POOL_MXBEAN_DOMAIN_TYPE |
Имя домена и свойство ключа типа в ObjectName для MemoryPoolMXBean. |
static final String |
OPERATING_SYSTEM_MXBEAN_NAME |
Строковое представление ObjectName для OperatingSystemMXBean. |
static final String |
RUNTIME_MXBEAN_NAME |
Строковое представление ObjectName для RuntimeMXBean. |
static final String |
THREAD_MXBEAN_NAME |
Строковое представление ObjectName для ThreadMXBean. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static ClassLoadingMXBean |
getClassLoadingMXBean() |
Возвращает управляемый компонент системы загрузки классов виртуальной машины Java. |
static CompilationMXBean |
getCompilationMXBean() |
Возвращает управляемый компонент системы компиляции виртуальной машины Java. |
static List |
getGarbageCollectorMXBeans() |
Возвращает список объектов GarbageCollectorMXBean в виртуальной машине Java. |
static List |
getMemoryManagerMXBeans() |
Возвращает список объектов MemoryManagerMXBean в виртуальной машине Java. |
static MemoryMXBean |
getMemoryMXBean() |
Возвращает управляемый компонент системы памяти виртуальной машины Java. |
static List |
getMemoryPoolMXBeans() |
Возвращает список объектов MemoryPoolMXBean в виртуальной машине Java. |
static OperatingSystemMXBean |
getOperatingSystemMXBean() |
Возвращает управляемый компонент операционной системы, в которой работает виртуальная машина Java. |
static Set |
getPlatformManagementInterfaces() |
Возвращает набор объектов Class, подинтерфейсов PlatformManagedObject, представляющих все интерфейсы управления для мониторинга и управления платформой Java. |
static MBeanServer |
getPlatformMBeanServer() |
Возвращает платформенный MBeanServer. |
static <T extends PlatformManagedObject> |
getPlatformMXBean |
Возвращает платформенный MXBean, реализующий заданный mxbeanInterface, для которого в виртуальной машине Java предусмотрен единственный экземпляр. |
static <T extends PlatformManagedObject> |
getPlatformMXBean |
Возвращает прокси платформенного MXBean для mxbeanInterface, для которого в виртуальной машине Java предусмотрен единственный экземпляр; прокси перенаправляет вызовы методов через заданный MBeanServerConnection. |
static <T extends PlatformManagedObject> |
getPlatformMXBeans |
Возвращает список платформенных MXBean, реализующих заданный mxbeanInterface в виртуальной машине Java. |
static <T extends PlatformManagedObject> |
getPlatformMXBeans |
Возвращает список прокси платформенных MXBean, перенаправляющих вызовы методов mxbeanInterface через заданный MBeanServerConnection. |
static RuntimeMXBean |
getRuntimeMXBean() |
Возвращает управляемый компонент среды выполнения виртуальной машины Java. |
static ThreadMXBean |
getThreadMXBean() |
Возвращает управляемый компонент системы потоков виртуальной машины Java. |
static <T> T |
newPlatformMXBeanProxy |
Возвращает прокси интерфейса платформенного MXBean с заданным именем MXBean, перенаправляющий вызовы методов через заданный MBeanServerConnection. |
Подробное описание полей
CLASS_LOADING_MXBEAN_NAME
public static final String CLASS_LOADING_MXBEAN_NAME
ObjectName для ClassLoadingMXBean.- См. также:
COMPILATION_MXBEAN_NAME
public static final String COMPILATION_MXBEAN_NAME
ObjectName для CompilationMXBean.- См. также:
MEMORY_MXBEAN_NAME
public static final String MEMORY_MXBEAN_NAME
ObjectName для MemoryMXBean.- См. также:
OPERATING_SYSTEM_MXBEAN_NAME
public static final String OPERATING_SYSTEM_MXBEAN_NAME
ObjectName для OperatingSystemMXBean.- См. также:
RUNTIME_MXBEAN_NAME
public static final String RUNTIME_MXBEAN_NAME
ObjectName для RuntimeMXBean.- См. также:
THREAD_MXBEAN_NAME
public static final String THREAD_MXBEAN_NAME
ObjectName для ThreadMXBean.- См. также:
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
public static final String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
ObjectName для GarbageCollectorMXBean. Уникальный ObjectName для GarbageCollectorMXBean можно сформировать, добавив к этой строке ",name=имя сборщика".- См. также:
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
public static final String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
ObjectName для MemoryManagerMXBean. Уникальный ObjectName для MemoryManagerMXBean можно сформировать, добавив к этой строке ",name=имя менеджера".- См. также:
MEMORY_POOL_MXBEAN_DOMAIN_TYPE
public static final String MEMORY_POOL_MXBEAN_DOMAIN_TYPE
ObjectName для MemoryPoolMXBean. Уникальный ObjectName для MemoryPoolMXBean можно сформировать, добавив к этой строке ,name=имя пула.- См. также:
Подробное описание методов
getClassLoadingMXBean
public static ClassLoadingMXBean getClassLoadingMXBean()
- Возвращает:
- объект
ClassLoadingMXBeanдля виртуальной машины Java.
getMemoryMXBean
public static MemoryMXBean getMemoryMXBean()
- Возвращает:
- объект
MemoryMXBeanдля виртуальной машины Java.
getThreadMXBean
public static ThreadMXBean getThreadMXBean()
- Возвращает:
- объект
ThreadMXBeanдля виртуальной машины Java.
getRuntimeMXBean
public static RuntimeMXBean getRuntimeMXBean()
- Возвращает:
- объект
RuntimeMXBeanдля виртуальной машины Java.
getCompilationMXBean
public static CompilationMXBean getCompilationMXBean()
null, если в виртуальной машине Java нет системы компиляции.- Возвращает:
- объект
CompilationMXBeanдля виртуальной машины Java илиnull, если в виртуальной машине Java нет системы компиляции.
getOperatingSystemMXBean
public static OperatingSystemMXBean getOperatingSystemMXBean()
- Возвращает:
- объект
OperatingSystemMXBeanдля виртуальной машины Java.
getMemoryPoolMXBeans
public static List<MemoryPoolMXBean> getMemoryPoolMXBeans()
MemoryPoolMXBean в виртуальной машине Java. Виртуальная машина Java может иметь один или несколько пулов памяти. Во время выполнения она может добавлять или удалять пулы памяти.- Возвращает:
- список объектов
MemoryPoolMXBean.
getMemoryManagerMXBeans
public static List<MemoryManagerMXBean> getMemoryManagerMXBeans()
MemoryManagerMXBean в виртуальной машине Java. Виртуальная машина Java может иметь один или несколько менеджеров памяти. Во время выполнения она может добавлять или удалять менеджеры памяти.- Возвращает:
- список объектов
MemoryManagerMXBean.
getGarbageCollectorMXBeans
public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans()
GarbageCollectorMXBean в виртуальной машине Java. Виртуальная машина Java может иметь один или несколько объектов GarbageCollectorMXBean. Во время выполнения она может добавлять или удалять GarbageCollectorMXBean.- Возвращает:
- список объектов
GarbageCollectorMXBean.
getPlatformMBeanServer
public static MBeanServer getPlatformMBeanServer()
MBeanServer. При первом вызове этого метода он сначала создает платформенный MBeanServer, вызывая метод MBeanServerFactory.createMBeanServer, и регистрирует каждый платформенный MXBean в этом платформенном MBeanServer с его ObjectName. При последующих вызовах этот метод просто возвращает первоначально созданный платформенный MBeanServer. MXBeans, которые создаются и уничтожаются динамически, например пулы памяти pools и managers, будут автоматически регистрироваться и удаляться из регистрации в платформенном MBeanServer.
Если задано системное свойство javax.management.builder.initial, создание платформенного MBeanServer будет выполняться указанным MBeanServerBuilder.
Рекомендуется также использовать этот платформенный MBeanServer для регистрации других управляемых компонентов приложения, помимо платформенных MXBeans. Это позволит публиковать все MBean через один и тот же MBeanServer и тем самым упростит публикацию и обнаружение по сети. Следует избегать конфликтов имен с платформенными MXBeans.
- Возвращает:
- платформенный
MBeanServer; платформенные MXBeans регистрируются в платформенномMBeanServerпри первом вызове этого метода. - См. также:
newPlatformMXBeanProxy
public static <T> T newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface) throws IOException
MBeanServerConnection. Этот метод эквивалентен:
гдеProxy.newProxyInstance(mxbeanInterface.getClassLoader(), new Class[] { mxbeanInterface }, handler)
handler — это InvocationHandler, которому передаются вызовы методов интерфейса MXBean. Этот handler преобразует входной параметр из типа данных MXBean в соответствующий открытый тип перед передачей в MBeanServer и преобразует возвращаемое значение вызова метода MXBean через MBeanServer из открытого типа в соответствующий тип возвращаемого значения, объявленный в интерфейсе MXBean. Если MXBean является источником уведомлений (то есть реализует NotificationEmitter), этот прокси будет реализовывать и mxbeanInterface, и NotificationEmitter.
Примечания:
- Использование прокси MXBean — это удобный способ удаленного доступа к платформенному MXBean работающей виртуальной машины. Все вызовы методов прокси MXBean перенаправляются в
MBeanServerConnection, где при возникновении проблем со связью с сервером соединителя может быть выброшено исключениеIOException. Если оно выброшено,IOExceptionбудет обернуто вUndeclaredThrowableException. Приложение, осуществляющее удаленный доступ к платформенным MXBeans с помощью прокси, должно быть готово перехватитьUndeclaredThrowableExceptionи обработать его причину так, как если бы эта причина была выброшена интерфейсомMBeanServerConnection. - Если клиентское приложение предназначено для удаленного доступа к MXBeans работающей виртуальной машины, версия которой отличается от версии виртуальной машины, на которой выполняется приложение, оно должно быть готово перехватить
InvalidObjectException. Это исключение выбрасывается, когда прокси MXBean получает имя константы перечисления, отсутствующей в классе перечисления, загруженном в клиентском приложении. Если оно выброшено,InvalidObjectExceptionбудет обернуто вUndeclaredThrowableException. -
MBeanServerInvocationHandlerили его методnewProxyInstanceнельзя использовать для создания прокси платформенного MXBean. Объект прокси, созданный с помощьюMBeanServerInvocationHandler, не обрабатывает свойства платформенных MXBeans, описанные в спецификации класса.
- Параметры типа:
T— параметр типаmxbeanInterface- Параметры:
-
connection—MBeanServerConnection, которому следует передавать вызовы. -
mxbeanName— имя платформенного MXBean вconnection, которому следует передавать вызовы.mxbeanNameдолжен иметь форматObjectName. -
mxbeanInterface— интерфейс MXBean, который должен реализовываться прокси. - Возвращает:
- прокси для интерфейса платформенного MXBean с заданным именем MXBean, который перенаправляет вызовы методов через заданное
MBeanServerConnection, илиnull, если такой объект не существует. - Выбрасывает:
-
IllegalArgumentException— если-
mxbeanNameне имеет допустимого форматаObjectNameили - именованный MXBean в
connectionне является MXBean, предоставляемым платформой, или - именованный MXBean не зарегистрирован в
MBeanServerConnection, или - именованный MXBean не является экземпляром заданного
mxbeanInterface
-
-
IOException— если при обращении кMBeanServerConnectionпроизошла ошибка связи.
getPlatformMXBean
public static <T extends PlatformManagedObject> T getPlatformMXBean(Class<T> mxbeanInterface)
mxbeanInterface, для которого спецификацией предусмотрен только один экземпляр в виртуальной машине Java. Этот метод может вернуть null, если интерфейс управления не реализован в виртуальной машине Java (например, виртуальная машина Java без системы компиляции не реализует CompilationMXBean); в противном случае этот метод эквивалентен вызову:
getPlatformMXBeans(mxbeanInterface).get(0);
- Параметры типа:
T— параметр типаmxbeanInterface- Параметры:
-
mxbeanInterface— интерфейс управления для платформенного MXBean, имеющего один экземпляр в виртуальной машине Java, если он реализован. - Возвращает:
- платформенный MXBean, реализующий
mxbeanInterface, илиnull, если такой объект не существует. - Выбрасывает:
-
IllegalArgumentException— еслиmxbeanInterfaceне является интерфейсом управления платформы или не соответствует единственному экземпляру платформенного MXBean. - Начиная с:
- 1.7
getPlatformMXBeans
public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(Class<T> mxbeanInterface)
mxbeanInterface в виртуальной машине Java. Возвращенный список может содержать ноль, один или несколько экземпляров. Количество экземпляров в возвращенном списке определено в спецификации заданного интерфейса управления. Порядок не определен, и нет гарантии, что список будет возвращаться в том же порядке при последующих вызовах.- Параметры типа:
T— параметр типаmxbeanInterface- Параметры:
-
mxbeanInterface— интерфейс управления для платформенного MXBean - Возвращает:
- список платформенных MXBeans, реализующих
mxbeanInterface. - Выбрасывает:
-
IllegalArgumentException— еслиmxbeanInterfaceне является интерфейсом управления платформы. - Начиная с:
- 1.7
getPlatformMXBean
public static <T extends PlatformManagedObject> T getPlatformMXBean(MBeanServerConnection connection, Class<T> mxbeanInterface) throws IOException
mxbeanInterface, для которого предусмотрен только один экземпляр в виртуальной машине Java. Прокси будет перенаправлять вызовы методов через заданное MBeanServerConnection. Этот метод может вернуть null, если интерфейс управления не реализован в отслеживаемой виртуальной машине Java (например, виртуальная машина Java без системы компиляции не реализует CompilationMXBean); в противном случае этот метод эквивалентен вызову:
getPlatformMXBeans(connection, mxbeanInterface).get(0);
- Параметры типа:
T— параметр типаmxbeanInterface- Параметры:
-
connection—MBeanServerConnection, которому следует передавать вызовы. -
mxbeanInterface— интерфейс управления для платформенного MXBean, имеющего один экземпляр в отслеживаемой виртуальной машине Java, если он реализован. - Возвращает:
- прокси платформенного MXBean для перенаправления вызовов методов
mxbeanInterfaceчерез заданноеMBeanServerConnectionилиnull, если такой объект не существует. - Выбрасывает:
-
IllegalArgumentException— еслиmxbeanInterfaceне является интерфейсом управления платформы или не соответствует единственному экземпляру платформенного MXBean. -
IOException— если при обращении кMBeanServerConnectionпроизошла ошибка связи. - Начиная с:
- 1.7
- См. также:
getPlatformMXBeans
public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(MBeanServerConnection connection, Class<T> mxbeanInterface) throws IOException
mxbeanInterface через заданное MBeanServerConnection. Возвращенный список может содержать ноль, один или несколько экземпляров. Количество экземпляров в возвращенном списке определено в спецификации заданного интерфейса управления. Порядок не определен, и нет гарантии, что список будет возвращаться в том же порядке при последующих вызовах.- Параметры типа:
T— параметр типаmxbeanInterface- Параметры:
-
connection—MBeanServerConnection, которому следует передавать вызовы. -
mxbeanInterface— интерфейс управления для платформенного MXBean - Возвращает:
- список прокси платформенных MXBean для перенаправления вызовов методов
mxbeanInterfaceчерез заданноеMBeanServerConnection. - Выбрасывает:
-
IllegalArgumentException— еслиmxbeanInterfaceне является интерфейсом управления платформы. -
IOException— если при обращении кMBeanServerConnectionпроизошла ошибка связи. - Начиная с:
- 1.7
- См. также:
getPlatformManagementInterfaces
public static Set<Class<? extends PlatformManagedObject>> getPlatformManagementInterfaces()
Class, подинтерфейсов PlatformManagedObject, представляющих все интерфейсы управления для мониторинга и управления платформой Java.- Возвращает:
- набор объектов
Class, подинтерфейсовPlatformManagedObject, представляющих интерфейсы управления для мониторинга и управления платформой Java. - Начиная с:
- 1.7
© 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/java.management/java/lang/management/ManagementFactory.html