Инструменты, доступные для отладки производственных Проблем в [закрытых] JAVA-приложениях

13
задан j0k 15 April 2013 в 14:15
поделиться

7 ответов

Каковы способы и инструменты для получения дампа потоков?

Для создания дампа потока вы можете использовать JConsole, VisualVM или, проще говоря, послать сигнал QUIT целевому процессу

kill -QUIT <pid> 

] или

kill -3 <pid>

Начиная с Java 5, существует также jstack , который не зависит от платформы и имеет удобную опцию -m для печати как Java, так и собственных фреймов (смешанный режим).

Каковы способы и инструменты для создания дампов кучи?

С виртуальными машинами Sun, jmap , Sun JConsole , Sun VisualVM , SAP JVMMon. Для виртуальных машин IBM проверьте эту страницу . На самом деле в вики Eclipse MAT есть хороший раздел Получение дампа кучи , в котором суммируются все параметры.

Какие есть инструменты для анализа вышеуказанных дампов?

Для дампов потоков я использую TDA - Thread Dump Analyzer (для Sun JDK) и IBM Thread and Monitor Dump Analyzer (для IBM JDK). Samurai также очень хорош (он работает как tail -f и автоматически получает дампы потоков из вашего std / stderr, он также может читать журналы «-verbose: gc») и был протестирован на виртуальных машинах от Apple, BEA, HP, Sun и IBM (также может читать IBM javacore).

Для дампа кучи я использую VisualVM (для Sun JDK) или IBM Heap Dump Analyzer (только для IBM JDK) или über awesome Eclipse MAT в зависимости от моих потребностей. Последний может работать с дампами двоичной кучи HPROF (созданными Sun, HP, SAP и т. Д. JVM), системными дампами IBM (после их предварительной обработки) и переносимыми дампами кучи IBM (PHD) из различных платформ IBM).

7
ответ дан 2 December 2019 в 01:20
поделиться

Предполагая JDK 6, взгляните на следующую статью, чтобы получить дамп потоков работающей программы:

http://java.sun.com/developer/technicalArticles/Programming/Stacktrace /

Вы можете использовать JHat для анализа кучи:

http://java.sun.com/javase/6/docs/technotes/tools/share/jhat.html

Если вы хотите делать дамп памяти, взгляните на jmap:

http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html

В качестве альтернативы, если вам нужно провести более глубокий анализ, посмотрите профилировщик, такой как Yourkit:

http://www.yourkit.com/

1
ответ дан 2 December 2019 в 01:20
поделиться

Есть также эти две вещи, которые могут вас заинтересовать:

1
ответ дан 2 December 2019 в 01:20
поделиться

Стандартного набора инструментов для JVM не существует. Они зависят от поставщика, и вам следует обращаться к документации.

Для Sun Java 6 программа VisualVM очень и очень полезна для быстрого получения профиля и трассировки стека работающей программы.

1
ответ дан 2 December 2019 в 01:20
поделиться

Инструмент, который я использую для такого рода отладки Sun JVM, - это

  • jstack для создания дампа потока
  • jmap для получения дампа памяти / кучи, или гистограмма
  • eclipse mat для пост-анализа дампа кучи, созданного jmap
  • . Visual vm имеет приятный пользовательский интерфейс для анализа виртуальной машины в реальном времени (также может принимать дампы кучи и потоков)
1
ответ дан 2 December 2019 в 01:20
поделиться

И я думаю, что лучший способ отладки java-приложения в производственной среде - это НЕ дамп и так далее, а хорошее управление журналами .

См., Например, slf4j .

-1
ответ дан 2 December 2019 в 01:20
поделиться

Для устранения проблем с выделением памяти InMemProfiler можно использовать в командной строке. Можно отслеживать текущие и собранные распределения, а собранные объекты можно разбивать на сегменты в зависимости от их срока службы.

В режиме трассировки этот инструмент можно использовать для идентификации источника выделения памяти.

0
ответ дан 2 December 2019 в 01:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: