Spec-Zone.ru › OpenJDK 8

Пакет java.lang.management

Предоставляет интерфейсы управления для мониторинга и управления виртуальной машиной Java и другими компонентами в среде выполнения Java.

См.: Описание

Интерфейс Описание
BufferPoolMXBean

Интерфейс управления пулом буферов, например, пулом direct или mapped буферов.

ClassLoadingMXBean

Интерфейс управления системой загрузки классов виртуальной машины Java.

CompilationMXBean

Интерфейс управления системой компиляции виртуальной машины Java.

GarbageCollectorMXBean

Интерфейс управления сборкой мусора виртуальной машины Java.

MemoryManagerMXBean

Интерфейс управления менеджером памяти.

MemoryMXBean

Интерфейс управления системой памяти виртуальной машины Java.

MemoryPoolMXBean

Интерфейс управления пулом памяти.

OperatingSystemMXBean

Интерфейс управления операционной системой, на которой работает виртуальная машина Java.

PlatformLoggingMXBean

Интерфейс управления системой логирования.

PlatformManagedObject

Объект управления платформы — это JMX MXBean для мониторинга и управления компонентом в платформе Java.

RuntimeMXBean

Интерфейс управления системой выполнения виртуальной машины Java.

ThreadMXBean

Интерфейс управления системой потоков виртуальной машины Java.

Класс Описание
LockInfo

Информация о блокировке.

ManagementFactory

Класс ManagementFactory — это фабричный класс для получения управляемых объектов для платформы Java.

ManagementPermission

Разрешение, которое SecurityManager будет проверять, когда код, выполняющийся с SecurityManager, вызывает методы, определенные в интерфейсе управления платформой Java.

MemoryNotificationInfo

Информация о уведомлении о памяти.

MemoryUsage

Объект MemoryUsage представляет собой моментальный снимок использования памяти.

MonitorInfo

Информация о блокировке монитора объекта.

ThreadInfo

Информация о потоке.

Перечисление Описание
MemoryType

Типы memory pools.

Описание пакета java.lang.management

Предоставляет интерфейсы управления для мониторинга и управления виртуальной машиной 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.

Способы доступа к 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, который перенаправляет вызовы методов на заданный сервер 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 для доступа к 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 потокобезопасен.

С момента:
1.5
См. также:
Спецификация JMX.

© 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.

Spec-Zone.ru

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