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 МБ), который можно импортировать в проект без необходимости добавления каких-либо дополнительных библиотек.
Скачать jar-файл:
Maven зависимости:
В файле 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.
На данный момент я реализовал шесть команд: jps, jinfo, jstat, jstack, jcmd и jmap. Пользователи могут напрямую вызывать соответствующие методы в каждом инструменте для выполнения соответствующих команд. Формат команд такой же, как и у команд, предоставляемых JDK, но для удобства и надёжности рекомендуется использовать уже реализованные методы.
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 см. в начале раздела «Использование».
Атрибут | Тип | Значение |
---|---|---|
mianClass | String | Информация о главном классе виртуальной машины |
mainArgs | String | Аргументы основного класса виртуальной машины |
vmArgs | String | Параметры виртуальной машины |
vmFlags | String | Флаг информации виртуальной машины |
errMessage | String | Информация об ошибке команды jps |
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 Методы
6.2 Результаты объекта
JCmdEnum — перечисление, содержащее различные команды, которые можно выполнить с помощью метода executeCommand().
JCmdProcess — объект, содержащий информацию о процессе виртуального компьютера, включая его идентификатор и содержимое.
JCmdResult — результат выполнения команды. Содержит список процессов (processes) и результат выполнения команды (result).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )