1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/tzfun-VmConsole-Api

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

VmConsole-Api

🔨 VmConsole-Api — это API для мониторинга производительности JVM, который расширяет функциональность инструментов Oracle JDK. Он предоставляет дополнительные функции для некоторых команд мониторинга и позволяет легко извлекать каждый параметр и результат из объекта.

Библиотека не просто использует метод exec() для запуска команд jps, jstat, jstack и других, но и предлагает более глубокий уровень расширения, что позволяет осуществлять мониторинг виртуальной машины без необходимости настройки переменных среды Java.

Примечание: этот инструмент API подходит для JDK 8 и выше (некоторые функции могут работать некорректно с JDK 7 и ниже), а виртуальная машина должна быть HotSpot.

Проект соответствует Apache Open Source License, а основной код был разработан или модифицирован на основе исходного кода JDK.

Как использовать

Я подготовил jar-файл с зависимостями (около 3 МБ), который можно импортировать в проект без необходимости добавления каких-либо дополнительных библиотек.

В файле pom.xml добавьте следующую зависимость (последняя версия):

<dependency>
  <groupId>com.github.tzfun</groupId>
  <artifactId>vmconsole</artifactId>
  <version>1.1.0</version>
  <classifier>jar-with-dependencies</classifier>
</dependency>

Пример использования:

import beifengtz.vmconsole.JpsCmd;
import beifengtz.vmconsole.entity.jps.JpsResult;

import java.util.List;

public class JpsTest {
    public static void main(String[] args) throws Exception{
        //  Получение всех идентификаторов процессов локальных виртуальных машин
        List<JpsResult> jpsResult1 = JpsCmd.quit();
        // Получение всех идентификаторов процессов локальных виртуальных машин с параметрами виртуальной машины
        List<JpsResult> jpsResult2 = JpsCmd.withVmArgs();
        // Получение всех идентификаторов процессов локальных виртуальных машин с параметрами основного класса
        List<JpsResult> jpsResult3 = JpsCmd.withMainClassArgs();
        // Получение всех идентификаторов процессов локальных виртуальных машин с полным именем основного класса или jar
        List<JpsResult> jpsResult4 = JpsCmd.withFullName();

        // Выполнение команды jps с пользовательскими параметрами, эквивалентно выполнению jps -l в командной строке
        List<JpsResult> jpsResult5 = JpsCmd.run(new String[]{"-l"});
    }
}

Для получения дополнительной информации рекомендуется ознакомиться с документацией: * https://www.kancloud.cn/beifengtz/vmconsole/1118492.

API документация доступна по адресу: * http://doc.vmconsole.beifengtz.com.

Общение

Если вы обнаружили ошибку при использовании, или у вас есть предложения или комментарии к этому продукту, пожалуйста, отправьте электронное письмо автору: beifengtz@163.com.

Об авторе

Подробное описание VmConsole

На данный момент я реализовал шесть команд: jps, jinfo, jstat, jstack, jcmd и jmap. Пользователи могут напрямую вызывать соответствующие методы в каждом инструменте для выполнения соответствующих команд. Формат команд такой же, как и у команд, предоставляемых JDK, но для удобства и надёжности рекомендуется использовать уже реализованные методы.

  • JpsCmd: получение идентификатора экземпляра локальной виртуальной машины, информации о главном классе, параметров виртуальной машины и т. д., инкапсуляция команды jps.
  • JInfoCmd: получение и установка системной информации и параметров виртуальной машины, инкапсуляция команды jinfo.
  • JStatCmd: получение информации о состоянии памяти виртуальной машины, включая информацию о сборке мусора, информацию о метаданных и информацию об экземплярах классов, инкапсуляцию команды jstat.
  • JStackCmd: получение информации о стеке виртуальной машины, включая стек потоков, файлы дампа и методы C/C++, инкапсулированные командой jstack.
  • JMapCmd: получение конфигурации кучи виртуальной машины, использование памяти в зонах Eden, Survivor и Old, вывод файлов дампа, получение информации об экземплярах класса и т.д., инкапсулирование команды jmap.
  • JCmd: выполнение команд на определённом экземпляре виртуальной машины, инкапсуляция команды jcmd.

1. JPSCmd

JpsCmd может получать идентификатор виртуальной машины (VMID), параметры виртуальной машины, параметры основного класса и полное имя основного класса или jar. Это соответствует команде JDK jps.

Метод Параметры Возвращаемое значение Описание
quit() Нет List<JpsResult> Получает только идентификаторы экземпляров локальных виртуальных машин
withMainClassArgs() Нет List<JpsResult> Получение идентификаторов экземпляров локальных виртуальных машин и параметров основных классов
withVmArgs() Нет List<JpsResult> Получение идентификаторов экземпляров локальных виртуальных машин и параметров виртуальных машин
withFullName() Нет List<JpsResult> Получение идентификаторов экземпляров локальных виртуальных машин, полных имён основных классов или jar
run() String[] var0 (параметры команды) List<JpsResult> Выполнение команды jps с настраиваемыми параметрами, рекомендуется использовать вышеуказанные методы

Все возможные возвращаемые объекты имеют следующие отношения наследования:

|—— beifengtz.vmconsole.entity.JvmResult
    |—— beifengtz.vmconsole.entity.jps.JpsResult

Содержание JvmResult см. в начале раздела «Использование».

1.2.1 JpsResult

Атрибут Тип Значение
mianClass String Информация о главном классе виртуальной машины
mainArgs String Аргументы основного класса виртуальной машины
vmArgs String Параметры виртуальной машины
vmFlags String Флаг информации виртуальной машины
errMessage String Информация об ошибке команды jps
strResult String Необработанный результат выполнения команды jps, не рекомендуется использовать, будет удалён в следующей версии
Атрибут Тип Значение
name String имя области кучи
regions String используется для обозначения области, если применяется сборщик мусора G1
capacity String общая ёмкость этой области в байтах
used String объём, который уже был использован, в байтах
free String свободный объём, в байтах
useRatio String процент использования памяти

5.2.2 HeapForG1

Атрибут Тип Значение
heap HeapSpace состояние пространства кучи сборщика мусора G1
eden HeapSpace состояние области Eden сборщика мусора G1
survivor HeapSpace состояние области Survivor сборщика мусора G1
old HeapSpace состояние области Old сборщика мусора G1

5.2.3 HeapForGen

Атрибут Тип Значение
newGen HeapSpace состояния областей Eden и Survivor обычного сборщика мусора
youngEden HeapSpace состояние области Eden обычного сборщика мусора
youngFrom HeapSpace состояние области From Survivor обычного сборщика мусора
youngTo HeapSpace состояние области To Survivor обычного сборщика мусора
oldGen HeapSpace состояние области Old обычного сборщика мусора

5.2.4 JMapForHeapUsage

Атрибут Тип Значение
heapForGen HeapForGen состояние кучи обычного сборщика мусора
heapForG1 HeapForG1 состояние кучи сборщика мусора G1

5.2.5 JMapForHeapResult

| Атрибут | Тип | Значение | | --- --- | --- | --- | | heapConf | HashMap<String, Object> | информация о конфигурации пространства кучи | | heapUsage | JMapForHeapUsage | использование пространства кучи |

6. JCmd

Для выполнения команд на определённом виртуальном компьютере используется метод jcmd.

6.1 Методы

  • listProcess() — возвращает JCmdResult и не имеет параметров. Используется для вывода списка процессов виртуального компьютера.
  • executeCommand() — принимает два параметра: идентификатор виртуального компьютера (vmId) и объект JCmdEnum. Возвращает JCmdResult. Используется для выполнения команды на указанном виртуальном компьютере.

6.2 Результаты объекта

JCmdEnum — перечисление, содержащее различные команды, которые можно выполнить с помощью метода executeCommand().

JCmdProcess — объект, содержащий информацию о процессе виртуального компьютера, включая его идентификатор и содержимое.

JCmdResult — результат выполнения команды. Содержит список процессов (processes) и результат выполнения команды (result).

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

API для мониторинга производительности виртуальной машины JVM — это расширенная версия tools.jar пакета Oracle JDK. В нём результаты некоторых команд мониторинга были заключены в оболочку, что позволяет удобно считывать каждый параметр и результат из объекта. Эта библиотека классов не просто использует вызов exec() во время выполнения для запус... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/tzfun-VmConsole-Api.git
git@api.gitlife.ru:oschina-mirror/tzfun-VmConsole-Api.git
oschina-mirror
tzfun-VmConsole-Api
tzfun-VmConsole-Api
master