Существуют варианты универсального c подхода «контролировать как можно больше параметров»:
- Командная строка:
jcmd <PID|main class> PerfCounter.print
( ref ) - вы будете тогда вам нужно обернуть голову вокруг имен свойств, которые он выводит, запланировать периодический запуск этого, хранить данные где-нибудь, визуализировать это самостоятельно. . Затем вы можете найти их (вы можете увидеть их и то, что они экспортируют, например, в JConsole), и с помощью инструмента командной строки, например jmxterm , вы можете записать значения и визуализировать их. Та же процедура: запланируйте себя, запишите, визуализируйте себя. Он не слишком удобен для пользователя, поэтому я упоминаю об этом подходе потому, что ... - ... люди обычно используют специализированную систему мониторинга (вспомните Graphite, Zabbix, Logstash / Kibana et c. - Я добавляю их как ключи для поиска вместе с "Java / JVM / JMX / JFR"), которые могут собирать информацию из процессов Java через JMX и красиво ее представлять. Periodi c работает, хранит данные временных рядов, визуализация решается этими системами.
- JFR («Java Flight Recorder») - это механизм, встроенный в JVM, который позволяет иметь непрерывную запись многих показателей системы JVM +, периодически выгружать их в файл, затем вы можете визуализировать их с помощью JM C («Java Mission Control»). Он «дешевле» в том смысле, что вам не нужно устанавливать / поддерживать отдельную систему мониторинга, но менее доступен (если не спарен с системой мониторинга): вам нужно собирать, скачивать, обрабатывать файлов .
В дополнение к ним существует jstat , который в основном совпадает с jcmd ... PerfCounter.print
, но в основном для показателей, связанных с памятью, он имеет функцию «периодически запускать» встроен и представляет результаты несколько иначе (одна «запись» - 1 строка).
Я бы сказал: если вам нужно делать это один раз или время от времени, будь то в течение более длительного периода, и вам нужно всего несколько параметров , например, память / количество потоков / ..., затем используйте jstat
, jcmd PerfCounter.print
; если нужно больше параметров, то JFR / JM C. Если вам это нужно как что-то, что работает вместе с вашей системой, всегда собирает и представляет, доступно людям, не имеющим прав администратора в системе, в которой находится JVM, тогда изучите системы мониторинга и их интеграцию с приложениями Java.