Предисловие
Эта статья в основном представляет инструменты обработки разломов виртуальных машин Java. Эти инструменты, упомянутые в статье, включают в себя:
| имя | Основные функции |
| JPS | Инструмент состояния процесса JVM отображает все процессы виртуальной машины горячей точки в указанной системе. Обычно местный хозяин |
| Jstat | Инструмент мониторинга статистики JVM, используемый для сбора рабочих данных всех аспектов виртуальной машины горячей точки |
| Jinfo | Информация о конфигурации для Java, отображение информации о конфигурации виртуальной машины |
| Jmap | Карта памяти для Java, генерирует снимки памяти виртуальной машины (файл HeapDump) |
| Джат | Brower Jvm Heam Dimplamper используется для анализа файлов HeapDump. Он устанавливает сервер HTTP/HTML, позволяя пользователям просматривать результаты анализа в браузере. |
| JStack | Stack Trace для Java, отображает снимки потоков виртуальных машин |
JPS: инструмент состояния процесса виртуальной машины
Функция JPS аналогична команде PS в Unix/Liunx. Просто он распечатает процесс работающего виртуальной машины и отображает имя основного класса Virtual Machine выполнения и локальной виртуальной машины уникального идентификатора этих процессов (локальный идентификатор виртуальной машины, LVMID, обычно идентификатор системы процесса).
Формат команды JPS:
JPS [Options] [hostid]
JPS может запросить состояние удаленной виртуальной машины службы RMI через протокол RMI, а Hostid - это имя хоста, зарегистрированное в реестре RMI.
JPS Другие общие варианты:
-q только вывод LVMID, пропуская имя основного класса;
-М Выходные параметры, передаваемые функции Main () основного класса при запуске процесса виртуальной машины;
-l выводит полное имя основного класса. Если процесс выполняет пакет JAR, выведите путь JAR;
-v Выходные параметры JVM При запуске процесса виртуальной машины.
Образец команды JPS:
[root@localhost ~]# jps -l3914 org.zhangyoubao.payservice.app12180 sun.tools.jps.jps6913 org.zhangyoubao.userprofiler.app6913
JSTAT: инструмент мониторинга статистики виртуальной машины
JSTAT - это инструмент, используемый для мониторинга различной информации о статусе работы виртуальных машин. Он может отображать запущенные параметры, такие как загрузка класса, память GC.JIT в локальных или удаленных процессах виртуальной машины.
Формат команды JSTAT:
jstat [опция vmid [интервал [s | ms] [count]]]]]
Интервал и счет представляют интервалы запросов и время. Если эти два параметра опущены, это означает, что запрос только один раз.
Другие часто используемые варианты для JSTAT:
-class контролируйте количество нагрузки/разгрузки класса и общее время загрузки пространства;
-Кокомпилер выводит методы, трудоемкие и другую информацию, составленную компилятором JIT;
-Принткомпиляция метод, который выводит скомпилированный метод JIT;
-GC контролирует статус кучи Java;
-gccapacity Содержание мониторинга в основном такое же, что и -gc, но выход фокусируется на максимальном/минимальном пространстве каждой области Java;
-gcutil Содержание мониторинга в основном такое же, что и -GC, но выход фокусируется на использовании пространства, занимает 100%;
-gccause Как функция -gcutil, дополнительный выход вызывает последний GC;
-gcnew контролирует статус нового поколения GCS;
-gcnewcapacity контролирует новое поколение и выводит то же самое, что и -gccapacity;
-gcold контролирует статус GC у пожилых людей;
-gcoldCapacity контролирует пожилых людей и выводит так же, как -gccapacity;
-gcpermcapactiy контролирует постоянную генерацию (область кода), выводит то же самое, что и -gccapacity;
Образец команды JSTAT:
[root@localhost ~]# jstat -gc 6913 S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 34048.0 34048.0 0.0 3217.8 272640.0 171092.7 683264.0 168910.7 46872.0 28031.2 37857 380.644 69 3.447 384.091
Jinfo: Информационный инструмент конфигурации Java
Функция Jinfo заключается в просмотре и регулировании различных параметров виртуальной машины в режиме реального времени.
Формат команды JINFO:
Jinfo [Option] PID
Другие часто используемые варианты для Jinfo:
-flag name = значение изменения параметров
Параметр параметра имени флага
Образец команды Jinfo:
[root@localhost ~]# jinfo 6913atching для обработки идентификатора 6913, пожалуйста, подождите ... Успешно прикрепленный отладчика. -Deserver.root =/usr/local/user_profiler -dcom.sun.management.jmxremote.port = 7003 -dcom.sun.management.jmxremote.ssl = false -dcom.sun.management.jmxremote.authenticate = false -verbose: gcxx:+printgtail -Xx:+useconcmarksweepgc
JMAP: инструмент картирования памяти Java
Команда JMAP может использоваться для создания снимков хранилища кучи (файлы дамп). Он также может проверить детали очереди завершения (самообслуживание), кучи Java и область кода.
Формат команды JMAP:
Jmap [Option] Vmid
Другие часто используемые варианты для JMAP:
-Дамп генерирует снимок хранения кучи Java. Формат: -dump: [live,] format = b, file = <файл имени>;
-FinalizerInfo отображает объект в F-Queue, который ждет, когда явление финализатора выполнит метод завершения;
-Heap отображает подробную информацию о куче Java, например, какой тип переработчика используется, конфигурация параметров, ожидание состояния поколений;
-Кисто отображает статистику объектов в куче, включая классы, книги экземпляров и общую мощность;
-Пермстат Используйте ClassLoader в качестве статистического портала для отображения информации о памяти постоянной генерации;
-F Когда опция обрабатывающей кучи виртуальной машины не отвечает, вы можете использовать эту опцию, чтобы заставить снимки дампа.
Образец команды JMAP:
[root@localhost ~] #jmap -histo 6913 | Голова -20 Num #Instances #Bytes Class Name ------------------------------------------------------ 1: 1864966 113459432 [C 2: 2018466 49201192 [B 3: 1597065 38329560 Java.LANG. 15037056 org.zhangyoubao.triftdef.userusefulinfo 5: 47104 11072048 [I 6: 268631 8596192 java.util.hashmap $ intpirt 7: 48812 7451760 <stontmethodklass> 8: 100683 64437121212121212121212 com.mysql.jdbc.ConnectionPropertiesImpl$BooleanConnectionProperty 9: 48812 6257856 <methodKlass> 10: 4230 5271640 <constantPoolKlass> 11: 159491 5103712 java.util.Hashtable$Entry 12: 120226 4809040 org.zhangyoubao.common.cache.adv.node 13: 127027 4064864 java.util.concurrent.concurrenthashmap $ Hashentry 14: 230433 3686928 Java.lang.integer 15: 3765 3049824 <Constantpoolpool com.mysql.jdbc.field 17: 4230 2943840 <Extanyklassklass>
где [C=char[],[B=byte[],[S=short[],[I=int[],[[I=int[][] .
JHAT: инструмент анализа снимков передачи виртуальной машины
Команда JHAT используется в сочетании с JMAP и используется для анализа файлов дампа, сгенерированных JMAP. Jhat имеет встроенный мини-HTTP/HTML-сервер. После анализа результаты сгенерированного файла дампа можно просматривать в браузере.
Формат команды JHAT:
JMAP FILENAME
Образец команды JHAT:
[root@localhost ~]# jhat html_intercept_server.dump Чтение из html_intercept_server.dump ... файл дампа создан ср. 23 ноября 13:05:33 CST 2016SnapShot Read, разрешение ... Устранение 203681 Объектов ... Спинки. HTTP Server на порте 7000Server готов.
JSTACK: инструмент Trace Trace Trace Trace Java.
JStack используется для создания снимка потока текущего времени виртуальной машины. Снимки потоков - это план стека методов, который выполняет каждый поток текущей виртуальной машины. Основная цель создания снимков потока - найти причины, по которым поток приостанавливается в течение длительного времени. Когда поток останавливается, используйте JSTACK, чтобы увидеть, что не отвечают потоки в фоновом режиме или какие ресурсы ждут.
Формат команды JSTACK:
JStack [Option] Vmid
Jstack другие варианты:
-F Когда нормально выходной запрос не реагируется, заставьте стек потока быть выводом;
-l отображать дополнительную информацию о блокировке в дополнение к отображению стека;
-m Если можно отобразить локальный метод, можно отобразить стек C/c ++.
Образец команды JSTACK:
[root@localhost ~]# jstack 29577 | Head -202016-11-23 12: 58: 23full Dilm Dilm Dimpless OpenJDK Server VM (24,91-B01 смешанный режим): «Prool-1-Thread-7261» PRIO = 10 TID = 0x0893A400 NID = 0x6B0D В ожидании Условия [0x652AD000]. java.lang.thread.state: timed_waiting (парковка) по адресу sun.misc.unsafe.park (родной метод) - парковка, чтобы ждать <0x75b5b400> (java.util.concurrent.synchronousqueue $ transferstack) java.util.concurrent.locks.locksupport.parknanos (locksupport.java:226) по адресу java.util.concurrent.synchronousqueue $ transferstack.awaitfulfill (synchronousqueue.java:460) java.util.concurrent.synchronousqueue $ transferstack.transfer (synchronousqueue.java:359) на java.util.concurrent.synchronousqueue.poll (synchronousqueue.java:942) в java.util.concurrent.threadpoolexecutor.gettask (threadpoolexecutor.java:1068) на java.util.concurrent.threadpoolexecutor.runworker (threatpoolexecutor.java:1130) java.util.concurrent.threadpoolexecutor $ korker.run (threadpoolexecutor.java:615) по адресу java.lang.thread.run (thread.java:745) "Service_hot_lscs-0" Daemon Prio = 10 Tid = 0x6982dc00 nid = 0x6 [0x64ce1000] java.lang.thread.state: Timed_waiting (Sleep) на java.lang.thread.sleep (родной метод) на org.zhangyoubao.video.client.runner.simplevideorunner.dowork (Simplevideorunner.java:150)
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи поможет вашему обучению или работе. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения.