Благодаря мониторингу JVM мы можем понять внутренний процесс GC, узнать, когда объекты молодого поколения перемещаются в старое поколение, когда происходит GC и как долго длится GC.
Чтобы выполнить настройку JVM, вы должны знать текущий статус JVM. Мониторинг JVM является важным шагом. Вот три распространенных метода мониторинга JVM.
jstat
Самый примитивный, но самый эффективный способ, не требует дополнительной настройки java-приложений, инструменты доступны по умолчанию при установке JDK, когда мы хотим понять рабочее состояние JVM, jstat может удовлетворить большую часть наших потребностей.
1 Обычно jstat устанавливается вместе с java-программой, можем посмотреть.
2 использовать
# 例如:jstat -class -t 79065 1000 5,代表监控pid为79065的jvm进程,查看其class信息,并且没1s钟监控一次,总共监控5次。
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
# jstat可以监控的内容如下
jstat -options
-class 统计JVM中classload的信息
-compiler 统计JIT编译器的信息
-gc 统计GC的堆内存信息
-gccapacity 统计JVM的堆内存剩余空间
-gccause 统计导致最新一次GC的原因
-gcmetacapacity
-gcnew 统计新生代的信息
-gcnewcapacity
-gcold 统计老年代的信息
-gcoldcapacity
-gcutil 显示GC的统计信息
-printcompilation 显示JVM的编译方法统计
Объяснение столбца:
Емкость зоны выживания SOC 0 (КБ) Емкость зоны выживания S1C 1 (КБ) S0U Зона выживания 0 используемого пространства (КБ). S1U Survival Area 1 Использованное пространство (КБ). Емкость EC Eden области (KB). Емкость, используемая в зоне EU Eden (КБ). Емкость старой генерации ОС (КБ). Емкость, используемая старым возрастом OU (КБ). Текущая постоянная емкость памяти ПК (КБ). Используемая емкость постоянного диапазона PU (КБ). Сколько раз Young GC происходил в YGC Время YGCT Young GC Количество FGC Полный GC Время сбора FGCT Full GC GCT Общее время GC.
Посмотрите, найдено ли вышеизложенное, простое, прямое и эффективное.
jconsole или jvisualvm
Эти два инструмента также включены в JDK, и jvisualvm может потребоваться загрузить онлайн, но оба получают доступ к JVM через jmx, а затем выполняют статистику.При запуске JVM укажите содержимое jmx.
Способ 1: укажите пароль для повышения безопасности
java -Dcom.sun.management.jmxremote.port=5000 -Dcom.sun.management.jmxremote.password.file=/Users/aihe/Documents/jmxremote.password -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.access.file=/Users/aihe/Documents/jmxremote.access -jar target/jmxdemo-0.0.1-SNAPSHOT.jar
arthas
Простой в использовании инструмент мониторинга jvm с открытым исходным кодом от Alibaba немного похож на набор инструментов командной строки, которые поставляются с jdk.
1 установка
# 安装方式一
curl -L https://alibaba.github.io/arthas/install.sh | sh
# 安装方式二
java -jar arthas-boot.jar --repo-mirror aliyun --use-http
2 использовать
java -jar arthas-boot.jar
Справочный адрес:Alibaba.GitHub.IO/art has/Inst…
Уведомление
Не забывайте выключать после использования. Если не выключать, могут возникнуть некоторые проблемы. Например, мониторинг по-прежнему является последним процессом jvm. В любом случае, сначала используйте выключение.
наконец
На этот раз я представил свои часто используемые инструменты JVM для мониторинга. Если есть лучший инструмент, пожалуйста, порекомендуйте его мне.