Spec-Zone.ru › OpenJDK 21

Пакет java.lang.management

package java.lang.management
Предоставляет интерфейсы управления для мониторинга и управления виртуальной машиной Java и другими компонентами в среде выполнения Java. Он позволяет осуществлять мониторинг и управление работающей виртуальной машиной Java как локально, так и удаленно.

MXBean платформы

MXBean платформы — это управляемый компонент, который соответствует спецификации инструментации JMX и использует только набор основных типов данных. Каждый MXBean платформы является PlatformManagedObject с уникальным именем.

ManagementFactory

Класс ManagementFactory является классом фабрики управления для платформы Java. Этот класс предоставляет набор статических методов-фабрик для получения MXBean платформы Java, чтобы приложение могло напрямую получить доступ к MXBean.

К серверу MBean платформы можно получить доступ с помощью метода getPlatformMBeanServer. При первом вызове этого метода создается сервер MBean платформы и регистрируются все MXBean платформы, включая MXBean платформы. Каждый 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();
    
  • Создание экземпляра прокси MXBean, который перенаправляет вызовы методов на заданный сервер MBean:
       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 для доступа к MXBean локально или к конкретному MBeanServerConnection для доступа к MXBean удаленно. Атрибуты и операции 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 вернут MXBean с расширением платформы.

Рекомендуется именовать платформоспецифические атрибуты с префиксом, зависящим от поставщика, например, с именем поставщика, чтобы избежать столкновений имён атрибутов между будущим расширением стандартного интерфейса управления и расширением платформы. Если будущие расширения стандартного интерфейса управления определят новый атрибут для интерфейса управления, имя которого совпадает с именем атрибута, зависящего от поставщика, приложениям, обращающимся к этому атрибуту, зависящему от поставщика, потребуется внести изменения для поддержки версионирования и совместимости.

Ниже приведен пример того, как получить доступ к атрибуту из расширения платформы:

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
См. также:
  • JMX Specification
java.base
Модуль Пакет Описание
java.lang
Предоставляет классы, являющиеся фундаментальными для разработки языка программирования Java.
Класс Описание
BufferPoolMXBean
Интерфейс управления пулом буферов, например, пулом direct или mapped буферов.
ClassLoadingMXBean
Интерфейс управления системой загрузки классов виртуальной машины Java.
CompilationMXBean
Интерфейс управления системой компиляции виртуальной машины Java.
GarbageCollectorMXBean
Интерфейс управления сборкой мусора виртуальной машины Java.
LockInfo
Информация о блокировке.
ManagementFactory
Класс ManagementFactory — это класс-фабрика для получения управляемых компонентов для платформы Java.
ManagementPermission
Разрешение, которое SecurityManager будет проверять, когда код, работающий с SecurityManager, вызывает методы, определенные в интерфейсе управления для платформы Java.
MemoryManagerMXBean
Интерфейс управления менеджером памяти.
MemoryMXBean
Интерфейс управления системой памяти виртуальной машины Java.
MemoryNotificationInfo
Информация о уведомлении о памяти.
MemoryPoolMXBean
Интерфейс управления пулом памяти.
MemoryType
Типы memory pools.
MemoryUsage
Объект MemoryUsage представляет собой снимок использования памяти.
MonitorInfo
Информация о блокировке монитора объекта.
OperatingSystemMXBean
Интерфейс управления операционной системой, на которой запущена виртуальная машина Java.
PlatformLoggingMXBean
Интерфейс управления системой ведения журнала.
PlatformManagedObject
Объект управления платформы — это MXBean JMX для мониторинга и управления компонентом в платформе Java.
RuntimeMXBean
Интерфейс управления системой выполнения виртуальной машины Java.
ThreadInfo
Информация о потоке.
ThreadMXBean
Интерфейс управления системой потоков виртуальной машины Java.

© 1993, 2023, 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/21/docs/api/java.management/java/lang/management/package-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API