Руководство по анализу инструмента настройки JVM

Java JVM VisualVM Eclipse

В 2016 году я потратил некоторое время на разбор некоторых вводных статей о jvm.Оглядываясь назад, некоторые из них не были полностью дополнены, в том числе о том, как использовать инструменты для мониторинга изменений производительности до и после настройки. Инструмент используется в качестве графического интерфейса для более интуитивного отображения проблем. С другой стороны, некоторый анализ, требующий высокой производительности (анализ файла дампа), как правило, не анализируется напрямую в производстве. Часто файлы дампа составляют около 1 ГБ, а эффективность ручного анализ относительно высок, поэтому использование инструментов для анализа проблем, связанных с jvm, может достичь мультипликативного эффекта с половиной усилий.

Инструменты мониторинга и анализа JVM обычно делятся на две категории: одна — это инструмент, поставляемый с jdk, а другая — сторонний инструмент анализа. Собственные инструменты JDK обычно находятся в каталоге jdk bin и могут быть использованы напрямую, щелкнув в виде exe.Включенные инструменты анализа уже очень мощные, охватывают почти все аспекты, но чаще всего мы используем только два: jconsole.exe и jvisualvm .exe; существует множество сторонних инструментов анализа, каждый из которых имеет свою направленность, более репрезентативную: MAT (Memory Analyzer Tool), GChisto и т. д.

Для крупномасштабных приложений JAVA трудно заблокировать все лазейки с помощью тонкого тестирования.Даже если мы проделали большую плодотворную работу на этапе тестирования, многие проблемы все равно будут выявлены в производственной среде, и их трудно устранить. решить проблемы в тестовой среде воспроизвести. JVM может записывать часть рабочего состояния системы при возникновении проблемы и сохранять ее в файле дампа кучи (Heap Dump), что обеспечивает нам важную основу для анализа и диагностики проблемы. Среди них VisualVM и MAT — аналитические инструменты для файлов дампа.

Инструменты, поставляемые с jdk

jconsole

Jconsole (Консоль мониторинга и управления Java) — это консоль мониторинга и управления Java, которая поставляется с JDK, начиная с java5. Она используется для мониторинга памяти, потоков и классов в JVM. Это мониторинг производительности графического интерфейса на основе JMX (расширение управления Java). инструмент. jconsole использует механизм расширения JVM для получения и отображения такой информации, как производительность и потребление ресурсов приложениями, работающими на виртуальной машине.

Щелкните jconsole.exe непосредственно в каталоге jdk/bin, чтобы запустить его. Интерфейс выглядит следующим образом:

Во всплывающем окне вы можете выбрать локальное приложение Java для мониторинга локального компьютера или выбрать удаленную службу Java для мониторинга.Если вы хотите отслеживать удаленную службу, вам нужно добавить следующий код в tomcat сценарий запуска:

 -Dcom.sun.management.jmxremote.port=6969  

 -Dcom.sun.management.jmxremote.ssl=false  

 -Dcom.sun.management.jmxremote.authenticate=false

После подключения вы можете увидеть обзор jconsole и основные функции: обзор, память, поток, класс, виртуальная машина, MBeans

  • В обзоре показано использование памяти кучи, количество активных потоков, загруженных классов и линейный график занятости ЦП в виде графиков, на которых можно наглядно наблюдать изменения во время выполнения программы.

  • Память, которая в основном показывает использование памяти. В то же время вы можете просмотреть сравнение значения изменения кучи и памяти без кучи. Вы также можете нажать, чтобы выполнить GC, чтобы наказать выполнение GC.

  • Поток, основной интерфейс отображает количество действий и пики количества потоков. В то же время вы можете щелкнуть поток в левом нижнем углу, чтобы просмотреть подробную информацию о потоке, например, в каком состоянии находится поток. , содержимое стека и т. д., и вы также можете нажать «Обнаружить тупик», чтобы проверить между потоками, есть ли тупиковая ситуация.

  • Class, который в основном отображает информацию о загруженных классах.

  • Обзор виртуальной машины, показывающий обзор всей информации JVM, включая базовую информацию, информацию о потоках, куче, операционной системе, параметрах виртуальной машины и т. д.

  • Mbean, просматривать свойства, методы и т. д. MBean.

VisualVM

Введение

VisualVM — это инструмент, предоставляющий визуальный интерфейс для просмотра сведений о приложениях на основе технологии Java (приложения Java), работающих на виртуальной машине Java (JVM). VisualVM упорядочивает данные, связанные с программным обеспечением JVM, полученные с помощью инструментов Java Development Kit (JDK), и предоставляет эту информацию таким образом, чтобы вы могли быстро просмотреть данные о нескольких приложениях Java. Вы можете просматривать данные о локальных приложениях, а также о приложениях, работающих на удаленных хостах. Кроме того, можно получить информацию о Данные экземпляра программного обеспечения JVM и сохраните эти данные в локальной системе для последующего просмотра или обмена с другими пользователями.

VisualVM — самый мощный инструмент настройки, поставляемый с javajdk, а также наиболее часто используемый мной инструмент настройки, и он включает почти все аспекты настройки jvm. Кроме того, дважды щелкните jvisualvm.exe в каталоге jdk/bin, чтобы использовать его.После запуска вы также можете выбрать локальный и удаленный, например jconsole.Если вам нужно контролировать удаленный, вам также необходимо настроить соответствующие параметры.Основной интерфейс следующее;

VisualVM может устанавливать различные подключаемые модули по мере необходимости.Каждый подключаемый модуль имеет разные функции.Некоторые в основном отслеживают сборщик мусора, некоторые в основном отслеживают память, а некоторые отслеживают потоки.

Как установить:

1. Выберите «Инструменты» > «Плагины» в главном меню. 2. На вкладке «Доступные плагины» установите флажок «Установить» для плагина. Щелкните Установить. 3. Шаг за шагом завершить процедуру установки плагина.

Здесь я беру Eclipse (pid 22296) в качестве примера. После двойного щелчка он будет развернут напрямую. Основной интерфейс отображает два основных содержимого системы и jvm. Щелкните параметры jvm и свойства системы в правом нижнем углу, чтобы обратиться к подробная информация о параметрах.

Поскольку плагинов для VisualVM слишком много, я в основном представлю здесь три из них: мониторинг, многопоточность, Visual GC.

Главная страница мониторинга — это фактически диаграмма процессора, памяти, класса, потока.

Между потоками и функциями jconsole нет большой разницы.

Visual GC — часто используемая функция, которая может четко видеть изменения памяти молодого и старого поколения, а также частоту gc и время gc.

На самом деле jconsole почти имеет вышеперечисленные функции.VisualVM более полный и интуитивный.Кроме того,VisualVM имеет много других функций,которые могут анализировать снэпшоты дампа памяти, снэпшоты дампа потока и анализировать их.Есть много других плагинов,которые вы можете проводить исследования.

Сторонние инструменты настройки

MAT

Что такое МАТ?

MAT (Memory Analyzer Tool), инструмент анализа памяти на основе Eclipse, — это быстрый, многофункциональный инструмент анализа кучи Java, который может помочь нам найти утечки памяти и сократить потребление памяти. Используйте инструмент анализа памяти для анализа из большого количества объектов, быстро вычисляйте размер объектов в памяти, смотрите, кто блокирует работу по переработке мусора, и визуально проверяйте возможные результаты через отчет Object.

Обычно анализ утечек памяти считается очень сложной задачей, обычно выполняемой старшими людьми в команде. Тем не менее, MAT (анализатор памяти Eclipse), который будет представлен, считается «тупым» инструментом анализа файлов дампа кучи, и вам нужно всего лишь щелкнуть мышью, чтобы создать профессиональный аналитический отчет. По сравнению с другими инструментами анализа утечек памяти, MAT очень прост в использовании и может выполняться одним щелчком мыши, даже новичок может быстро начать работу.

MAT устанавливается в виде подключаемого модуля eclipse. Конкретный процесс установки описываться не будет. Вы можете использовать команду visualvm или jmap для создания файла кучи и импортировать его в eclipse mat для создания отчета об анализе:

При создании этого отчета три html-файла результатов анализа (dump_Top_Consumers.zip, dump_Leak_Suspects.zip, dump_Top_Components.zip) будут созданы в каталоге того же уровня, что и файл дампа, который удобно отправить соответствующим коллегам для просмотра.

Необходимо обратить внимание на следующие области действий, отчетов и пошаговых действий:

  • Гистограмма: перечисляет объекты в памяти, количество и размер объектов, поддерживает поиск по регулярным выражениям, а также может вычислять сохраняемый размер всех объектов этого класса.

  • Dominator Tree: перечислите самые большие объекты и зависимые от них уцелевшие объекты (размер отсортирован по сохраненной куче)

  • Основные потребители: перечислите самые большие объекты графически

  • повторяющиеся классы: обнаружение классов, загруженных несколькими загрузчиками классов

  • Подозреваемые в утечке: анализ утечки памяти

  • Основные компоненты: список отчетов, которые составляют более 1 процента от общего количества кучи.

  • Отчет о компонентах: объекты анализа принадлежат одному пакету или загружаются одним и тем же загрузчиком классов.

Вышеупомянутое является лишь предварительным введением, у мата есть более мощные применения, такие как сравнение кучи памяти.В производственной среде для выявления проблем снимки памяти часто сбрасываются каждые несколько минут, а затем изменения в куче памяти в разное время сравниваются проблема найдена.

GChisto

GChisto — это профессиональный инструмент для анализа журналов сборщика мусора, которые можно анализировать с помощью журналов сборщика мусора: незначительная сборка мусора, время полной сборки мусора, частота и т. д., а также отображать ситуацию с сборкой мусора в различных формах, таких как списки, отчеты и диаграммы. Хотя интерфейс немного грубоват, но функция все еще хороша.

После настройки локальной среды jdk дважды щелкните GChisto.jar и нажмите «Добавить» во всплывающем окне ввода, чтобы выбрать журнал gc.log.

  • Статистика GC Pause: вы можете просмотреть количество GC, время GC, накладные расходы GC, максимальное время GC и минимальное время GC и т. д., а также соответствующую гистограмму.

  • Распределение пауз сборщика мусора: Просмотр подробного распределения пауз сборки мусора.Ось X представляет время паузы сборки мусора, а ось Y представляет количество пауз.

  • Временная шкала GC: отображает сборку мусора по всей временной шкале.

Однако этот инструмент больше не поддерживается и не может распознавать файлы журналов последней версии jdk.

gcviewer

GCViewer также является инструментом анализа, который используется для визуального просмотра журналов сборщиков мусора, созданных виртуальными Java-машинами Sun / Oracle, IBM, HP и BEA.Лично gcviewer считает, что отображаемый интерфейс более хаотичен и более профессионален, чем GChisto.

GC Easy

Это веб-инструмент, которым очень удобно пользоваться онлайн.

Адрес: http://gceasy.io

Зайдите на официальный сайт, загрузите упакованный zip или gz суффикс, и через некоторое время вы получите результаты анализа.

Этот инструмент рекомендуется для анализа gc.

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