Мне нужно проверить использование процессора и памяти для сервера на java, кто-нибудь знает, как это можно сделать?
java
operating-system
cpu
ram
Джонни Боу
источник
источник
Ответы:
Если вы ищете именно память в JVM:
Однако это следует рассматривать только как приблизительную оценку ...
источник
источник
freeMemory
здесь возвращает объем доступной памяти в JVM , которая очень отличаетсяЕсли вы используете Sun JVM и вас интересует использование внутренней памяти приложением (сколько из выделенной памяти используется вашим приложением), я предпочитаю включить ведение журнала встроенной сборки мусора JVM. Вы просто добавляете -verbose: gc к команде запуска.
Из документации Sun:
Для получения дополнительной информации см. Http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html.
источник
От сюда
источник
operatingSystemMXBean.getProcessCpuLoad();
? Согласно документации Oracle, этот метод возвращает «Возвращает« недавнее использование процессора »для процесса виртуальной машины Java». Тем не менее, я вижу относительно большую разницу между вашим методом и этим методом.OperatingSystemMXBean
класса. Один из них - интерфейс, представленный вjava.lang
. Но есть и другая версия, расширяющая этуcom.sun.management
. Это метод, о котором я имел в виду,OperatingSystemMXBean
JMX, MXBeans (ThreadMXBean и т. Д.) Предоставят вам информацию об использовании памяти и процессора.
источник
Для использования памяти будет работать следующее:
Что касается использования ЦП, вам необходимо использовать внешнее приложение для его измерения.
источник
Начиная с Java 1.5 JDK поставляется с новым инструментом: JConsole, который может показать вам использование ЦП и памяти любой JVM версии 1.5 или новее. Он может создавать диаграммы этих параметров, экспортировать в CSV, показывать количество загруженных классов, количество экземпляров, взаимоблокировок, потоков и т. Д.
источник
Если вы используете решение runtime / totalMemory, которое было опубликовано во многих ответах здесь (я делал это много), обязательно сначала принудительно установите две сборки мусора, если вам нужны довольно точные / согласованные результаты.
Для повышения эффективности Java обычно позволяет мусору заполнить всю память перед принудительным сбором мусора, и даже тогда это обычно не полный сборщик мусора, поэтому ваши результаты для runtime.freeMemory () всегда находятся где-то между «реальным» объемом свободной памяти и 0 .
Первый сборщик мусора получает не все, а большую часть.
Подъем заключается в том, что если вы просто выполните вызов freeMemory (), вы получите число, которое абсолютно бесполезно и сильно варьируется, но если сначала выполнить 2 gc, это очень надежный измеритель. Это также делает процедуру НАМНОГО медленнее (возможно, секунды).
источник
Объект Java Runtime может сообщать об использовании памяти JVM. Для использования ЦП вам придется использовать внешнюю утилиту, такую как Unix's top или Windows Process Manager.
источник
JConsole - это простой способ контролировать работающее приложение Java, или вы можете использовать Profiler, чтобы получить более подробную информацию о вашем приложении. Мне нравится использовать для этого NetBeans Profiler .
источник
Вот простой код для расчета текущего использования памяти в мегабайтах:
источник
Я бы также добавил следующий способ отслеживания загрузки процессора:
Вы можете прочитать здесь
источник
YourKit профайлера Java является отличным коммерческим решением. Вы можете найти дополнительную информацию в документации по профилированию ЦП и памяти .
источник
Если вы используете Tomcat, обратите внимание на Psi Probe , который позволяет отслеживать потребление внутренней и внешней памяти, а также множество других областей.
источник
Для Eclipse вы можете использовать TPTP (Test and Performance Tools Platform) для анализа использования памяти и т. Д. Подробнее
источник