Русский
Русский
English
Статистика
Реклама

Как отслеживать использование памяти CPU и загруженность диска в Java

В этой статье, мы обсудим некоторые начальные команды, инструменты и методы, которые помогут отслеживать использование памяти CPU и загруженность диска в Java.

Java инструменты наблюдают за конструкциями и процессами байткода Java. Профайлеры Java следят за всеми системными командами и использованием процессора. Это позволяет вам вызвать средства в любой момент.

Стандартный профайлер предоставляет большой объем знаний, ценность которых зависит от назначения отладки. Некоторые инструменты лучше для объединения логов для всех приложений и серверов, таких как Stackify Retrace, настраивая и отслеживая автоматический лог запросов. Инструменты: Stackifys Application Performance Management, Retrace - предлагают Java пользователям лучшее понимание устройства приложения при помощи внедренного логирования и профилирования кода. Вместе с внедренным централизованным и структурированным логированием, можно получить доступ ко всем логам приложения из единой точки для всех приложений и серверов.

Здесь мы перечислили способы демонстрации памяти и отслеживания CPU в Java для оптимизации кода.

5 способов для наблюдения за памятью CPU и загруженностью диска в Java!

  1. Базовые Linux команды для отслеживания использования памяти CPU и загруженности диска

    a) free m

    Команда передает доступную и занятую память вашей виртуальной машины.

    b) top

    Эта команда для просмотра использования CPU и памяти.

    Когда вы введете 1 на клавиатуре, тогда top сработает и отобразит все возможные CPU и использование каждого.

    Всего 4 CPU - CPU0, CPU1, CPU2, CPU3 - и вся их статистика использования.

    c) meminfo и cpuinfo

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

    $cat /proc/cpuinfo

    $cat /proc/meminfo

    d) Память CPU и использование диска конкретного процесса.

    $ps -p [pid] -o %cpu,%mem,cmd

    Эта команда для отслеживания использования CPU и загруженности памяти методом приложения Java. Также отображает какие команды запустили процесс.

    e) Это статистика потока Java метода.

    $ps uH p [pid]

    Эта команда предоставляет число потоков в процессе и их статистику.

    Это показывает как много памяти и CPU использовано для каждой угрозы и как долго они работают.

    Когда приложение не отвечает, эти команды могут использоваться для выполнения предыдущих запросов, прежде чем переходить к памяти и дырам в потоках. Это важные команды для первоначального исследования кроме статистики памяти и CPU.

    df k > Для проверки места на диске

    lsof -i :<port> > Для проверки, является ли данный порт открытым

    lsof i: tcp > Все установленные и слушающие TCP подключения

    netstat -plunt > Подключение к сети

  2. Отслеживание использования памяти

    Далее рассмотрим класс ManagementFactory для отслеживания использования памяти. Это реализовано путем запроса к MemoryMXBean. Раздел памяти куча необходим для использования MemoryMXBean:

    MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();System.out.println(String.format(Initial memory: %.2f GB,   (double)memoryMXBean.getHeapMemoryUsage().getInit() /1073741824));System.out.println(String.format(Used heap memory: %.2f GB,   (double)memoryMXBean.getHeapMemoryUsage().getUsed() /1073741824));System.out.println(String.format(Max heap memory: %.2f GB,   (double)memoryMXBean.getHeapMemoryUsage().getMax() /1073741824));System.out.println(String.format(Committed memory: %.2f GB,   (double)memoryMXBean.getHeapMemoryUsage().getCommitted() /1073741824));
    

    Это пример возвращает исходную, используемую, максимальную и переданную память. Здесь идет описание каждой:

    Исходная: исходный концепт Java приложений из ОС в течение запуска

    Используемая: память, используемая Java

    Максимальная: большая часть памяти относится к JVM. OutOfMemoryException возникает, если память заполнена

    Переданная: объем памяти доступный JVM

  3. Нативный агент профилирования (-Agentpath)

    Некоторые профилируемые java инструменты построены на нативных библиотеках для Windows, Linux или masOS. -Agentpath - это виртуальная машина которая используется для настройки библиотеки инструментов.

    Например:

    java agentpath:/usr/profiler/lib/[agent].so -jar application.jar

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

    Инструменты такие как JProfiler и Yourkit используют нативные инструменты профилирования.

  4. Java агент профилирования (-Javaagent)

    Агенты профилирования Java оснащены возможностью использования -javaagent виртуальной машины, как альтернатива. Вы можете создать легковесную программу в Java следуя следующим шагам:

    a) Оснащение программы требует разработки premain() системы

    b) Класс программы должен быть спроектирован как Pre-Main в MANIFEST.MF записи в данных JAR, где программа и ее зависимые классы создаются

    c) JVM начинается с javaagen

    java -javaagent:agent.jar -jar application.jar

    Класс агент premain() процесса выполняется до main() процесса использования, -javaagent представляет -jar.

    Если инструменты системы ожидают агент, для расположения после main() системы приложения, следующий шаг получить agentmain() метод в другом агент классе. Это следует сконструировать как Agent-Main класс в MANIFEST.MF записи.

  5. Агент библиотека (-Agentlib)

    -Agentlib - это виртуальная машина, использующаяся для упорядочения локальной библиотеки через JVM проект. Две главные причины по которым следуют использовать:

    1) Загрузка HPROF

    2) Для контроля JVM в режиме отладки

    1) Использование HPROF:

    HPROF профилируют кучу и CPU, которые передаются рядом с Java. Это делает язык эффективным. agentlib:hprof и Xrunhprof обычно используются как параметры виртуальной машины с HPROF.

    JVM отслеживает данные относящиеся к профилям кучи, обозначенных концептов, трассировка стека в java.hprof.txt.

    java agentlib:hprof=heap=sites Hello.java

    HPROF может быть покрыт во время сборки, так разработчик может выявить серьезные проблемы.

    javac -J-agentlib:hprof=heap=sites Hello.java

    2) Запуск приложения в режиме отладки

    Запуск приложения в режиме отладки подтверждается частью agentlib:jdwp виртуальной машины. Это решение размещает внутрипроцессные архивы отладки JVM

    java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:9001, server=y,suspend=y jar application.jar

    Этот параметр поддерживает отладку в приложении, использующим IDE.

    Простые шаги

    Используйте команды ограниченно/удаленно для метода отладки в Java. Приложение, которое отслеживает записи на указанном порту не переместится дальше пока шаг (ii) не завершится.

    Скриншот записи из приложения: Monitoring for transport dt_socket at address: 9001

    Инициализируйте проект в IDE в режиме отладки и присоедините шифрование к хосту и порту.

    Отлаживайте код на единственном сервере с IDE.

Источник: habr.com
К списку статей
Опубликовано: 04.06.2021 12:23:32
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Java

Программирование

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru