Пакет java.lang.management
Платформенный MXBean
Платформенный MXBean — это управляемый компонент, соответствующий спецификации инструментации JMX и использующий только набор основных типов данных. Каждый платформенный MXBean является PlatformManagedObject с уникальным именем.
ManagementFactory
Класс ManagementFactory — это фабрика управления для платформы Java. Этот класс предоставляет набор статических методов-фабрик для получения MXBeans платформы Java, чтобы приложение могло напрямую обращаться к MXBeans.
К платформенному MBeanServer можно получить доступ с помощью метода getPlatformMBeanServer. При первом вызове этого метода он создаёт платформенный MBeanServer и регистрирует все платформенные MXBeans, включая платформенные MXBeans. Каждый платформенный MXBean регистрируется с уникальным именем, определённым в спецификации интерфейса управления. Это один MBeanServer, который может быть использован разными управляемыми компонентами, работающими в одной виртуальной машине Java.
Взаимодействие
Приложение управления и платформенный MBeanServer работающей виртуальной машины могут взаимодействовать без необходимости использования классов, используемых интерфейсами платформенных MXBean. Типы данных, передаваемые между сервером и клиентом JMX-коннектора, являются JMX открытыми типами, что позволяет взаимодействовать между версиями. Тип данных, используемый в интерфейсах MXBean, отображается в открытый тип при доступе через интерфейс MBeanServer. Подробнее см. спецификацию MXBean.
Способы доступа к MXBeans
Приложение может отслеживать инструментацию виртуальной машины Java и среды выполнения следующими способами:
1. Прямой доступ к интерфейсу MXBean
- Получение экземпляра MXBean локально в работающей виртуальной машине Java:
RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean(); // Get the standard attribute "VmVendor" String vendor = mxbean.getVmVendor();Или, вызывая метод
getPlatformMXBeanилиgetPlatformMXBeans:RuntimeMXBean mxbean = ManagementFactory.getPlatformMXBean(RuntimeMXBean.class); // Get the standard attribute "VmVendor" String vendor = mxbean.getVmVendor(); - Создание прокси-объекта MXBean, который перенаправляет вызовы метода в заданный MBeanServer:
MBeanServerConnection mbs; // Connect to a running JVM (or itself) and get MBeanServerConnection // that has the JVM MBeans registered in it ... // Get a MBean proxy for RuntimeMXBean interface RuntimeMXBean proxy =ManagementFactory.getPlatformMXBean(mbs, RuntimeMXBean.class); // Get standard attribute "VmVendor" String vendor = proxy.getVmVendor();Прокси обычно используется для доступа к MXBean в удалённой виртуальной машине Java. Альтернативный способ создания прокси-объекта MXBean:
RuntimeMXBean proxy =ManagementFactory.newPlatformMXBeanProxy(mbs, ManagementFactory.RUNTIME_MXBEAN_NAME, RuntimeMXBean.class);
2. Непрямой доступ к интерфейсу MXBean через MBeanServer
- Использование
platform MBeanServerдля доступа к MXBeans локально или конкретногоMBeanServerConnectionдля доступа к MXBeans удалённо. Атрибуты и операции MXBean используют только открытые типы JMX, которые включают базовые типы данных,CompositeDataиTabularData, определённые вOpenType.MBeanServerConnection mbs; // Connect to a running JVM (or itself) and get MBeanServerConnection // that has the JVM MXBeans registered in it ... try { // Assuming the RuntimeMXBean has been registered in mbs ObjectName oname = new ObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME); // Get standard attribute "VmVendor" String vendor = (String) mbs.getAttribute(oname, "VmVendor"); } catch (....) { // Catch the exceptions thrown by ObjectName constructor // and MBeanServer.getAttribute method ... }
Расширение платформы
Реализация виртуальной машины Java может добавить своё платформенное расширение к интерфейсу управления, определяя платформозависимые интерфейсы, которые расширяют стандартные интерфейсы управления, включая платформоспецифические метрики и операции управления. Статические методы-фабрики в классе ManagementFactory вернут MXBeans с платформенным расширением.
Рекомендуется использовать префикс, специфичный для поставщика, такой как имя поставщика, для именования платформоспецифических атрибутов, чтобы избежать коллизий имён атрибутов между будущими расширениями стандартного интерфейса управления и платформенными расширениями. Если будущее расширение стандартного интерфейса управления определяет новый атрибут для интерфейса управления, а имя атрибута совпадает с именем атрибута специфичного для поставщика, приложениям, обращающимся к этому атрибуту специфичному для поставщика, придётся внести изменения для решения проблем с версионированием и совместимостью.
Ниже приведён пример доступа к атрибуту из платформенного расширения:
1) Прямой доступ к MXBean, специфичному для Oracle
List<com.sun.management.GarbageCollectorMXBean> mxbeans =
ManagementFactory.getPlatformMXBeans(com.sun.management.GarbageCollectorMXBean.class);
for (com.sun.management.GarbageCollectorMXBean gc : mxbeans) {
// Get the standard attribute "CollectionCount"
String count = mxbean.getCollectionCount();
// Get the platform-specific attribute "LastGcInfo"
GcInfo gcinfo = gc.getLastGcInfo();
...
}
2) Доступ к MXBean, специфичному для Oracle, через MBeanServer через прокси
MBeanServerConnection mbs;
// Connect to a running JVM (or itself) and get MBeanServerConnection
// that has the JVM MXBeans registered in it
...
List<com.sun.management.GarbageCollectorMXBean> mxbeans =
ManagementFactory.getPlatformMXBeans(mbs, com.sun.management.GarbageCollectorMXBean.class);
for (com.sun.management.GarbageCollectorMXBean gc : mxbeans) {
// Get the standard attribute "CollectionCount"
String count = mxbean.getCollectionCount();
// Get the platform-specific attribute "LastGcInfo"
GcInfo gcinfo = gc.getLastGcInfo();
...
}
Если не указано иное, передача аргумента null в конструктор или метод любого класса или интерфейса в этом пакете приведёт к исключению NullPointerException.
API java.lang.management потокобезопасен.
- Since:
- 1.5
- См. также:
| Класс | Описание |
|---|---|
| BufferPoolMXBean | |
| ClassLoadingMXBean | Интерфейс управления системой загрузки классов виртуальной машины Java. |
| CompilationMXBean | Интерфейс управления системой компиляции виртуальной машины Java. |
| GarbageCollectorMXBean | Интерфейс управления сборкой мусора виртуальной машины Java. |
| LockInfo | Информация о блокировке. |
| ManagementFactory | Класс ManagementFactory — это фабричный класс для получения управляемых компонентов для платформы Java. |
| ManagementPermission | Этот класс предназначен для разрешений управления. |
| MemoryManagerMXBean | Интерфейс управления менеджером памяти. |
| MemoryMXBean | Интерфейс управления системой памяти виртуальной машины Java. |
| MemoryNotificationInfo | Информация о уведомлении о памяти. |
| MemoryPoolMXBean | Интерфейс управления пулом памяти. |
| MemoryType | Типы memory pools. |
| MemoryUsage | Объект MemoryUsage представляет собой моментальный снимок использования памяти. |
| MonitorInfo | Информация о блокировке монитора объекта. |
| OperatingSystemMXBean | Интерфейс управления операционной системой, на которой выполняется виртуальная машина Java. |
| PlatformLoggingMXBean | Интерфейс управления средствами ведомости. |
| PlatformManagedObject | Платформенный управляемый объект — это JMX MXBean для мониторинга и управления компонентом в платформе Java. |
| RuntimeMXBean | Интерфейс управления системой выполнения виртуальной машины Java. |
| ThreadInfo | Информация о потоке. |
| ThreadMXBean | Интерфейс управления системой потоков виртуальной машины Java. |
© 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://download.java.net/java/early_access/jdk24/docs/api/java.management/java/lang/management/package-summary.html