Пакет java.lang.management
Предоставляет интерфейсы управления для мониторинга и управления виртуальной машиной Java и другими компонентами среды выполнения Java. Он позволяет осуществлять локальный и удаленный мониторинг и управление работающей виртуальной машиной Java.
MXBean платформы
MXBean платформы — это управляемый компонент, соответствующий спецификации инструментации JMX и использующий только набор основных типов данных. Каждый MXBean платформы является PlatformManagedObject с уникальным именем.
ManagementFactory
Класс ManagementFactory — это фабричный класс для управления на платформе Java. Этот класс предоставляет набор статических фабричных методов для получения MXBeans платформы Java, чтобы приложение могло напрямую получить доступ к MXBeans.
Доступ к серверу MBean платформы можно получить с помощью метода getPlatformMBeanServer. При первом вызове этого метода создается сервер MBean платформы и регистрируются все MXBeans платформы, включая MXBeans платформы. Каждый MXBean платформы регистрируется с уникальным именем, определенным в спецификации интерфейса управления. Это единственный сервер MBean, который может использоваться различными управляемыми компонентами, работающими в одной виртуальной машине Java.
Взаимодействие
Прикладное приложение управления и сервер MBean платформы работающей виртуальной машины могут взаимодействовать без необходимости использования классов, используемых интерфейсами MXBean платформы. Типы данных, передаваемые между сервером JMX-соединения и клиентом-соединения, являются открытыми типами JMX открытых типов, что позволяет взаимодействовать между версиями. Тип данных, используемый интерфейсами MXBean, отображается в открытый тип при доступе через интерфейс MBeanServer. Подробности см. в спецификации MXBean.
Способы доступа к MXBean
Приложение может отслеживать оснащение виртуальной машины 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();
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. |
| MemoryManagerMXBean | Интерфейс управления менеджером памяти. |
| MemoryMXBean | Интерфейс управления системой памяти виртуальной машины Java. |
| MemoryPoolMXBean | Интерфейс управления пулом памяти. |
| OperatingSystemMXBean | Интерфейс управления операционной системой, на которой работает виртуальная машина Java. |
| PlatformLoggingMXBean | Интерфейс управления системой ведомости. |
| PlatformManagedObject | Управляемый объект платформы — это JMX MXBean для мониторинга и управления компонентом в платформе Java. |
| RuntimeMXBean | Интерфейс управления системой выполнения виртуальной машины Java. |
| ThreadMXBean | Интерфейс управления системой потоков виртуальной машины Java. |
| Класс | Описание |
|---|---|
| LockInfo | Информация о блокировке. |
| ManagementFactory | Класс |
| ManagementPermission | Разрешение, которое SecurityManager проверит, когда код, выполняющийся с SecurityManager, вызовет методы, определенные в интерфейсе управления для платформы Java. |
| MemoryNotificationInfo | Информация о уведомлении памяти. |
| MemoryUsage | Объект |
| MonitorInfo | Информация о блокировке монитора объекта. |
| ThreadInfo | Информация о потоке. |
| Перечисление | Описание |
|---|---|
| MemoryType | Типы |
© 1993, 2020, 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/11/docs/api/java.management/java/lang/management/package-summary.html