Как анализировать информацию из дампа ядра Java?
Если процесс выходит из строя и покидает дамп ядра, или я создаю его с помощью gcore
, то как его анализировать?
Я хотел бы иметь возможность использовать jmap
, jstack
, jstat
и т.д., а также видеть значения всех переменных.
Таким образом, я могу найти причины для разбитого или замороженного JVM.
Ответы
Ответ 1
Хорошо, если вы создали основной дамп с gcore или gdb, тогда вам нужно будет преобразовать его в файл HPROF. Они могут использоваться VisualVM, Netbeans или Eclipse Memory Analyzer Tool (ранее SAP Memory Analyzer). Я бы рекомендовал Eclipse MAT.
Для преобразования файла используйте инструмент командной строки jmap.
# jmap -dump:format=b,file=dump.hprof /usr/bin/java core.1234
где:
dump.hprof - это имя файла hprof, который вы хотите создать
/usr/bin/java - это путь к версии двоичного кода java, который сгенерировал дамп ядра
core.1234 - ваш обычный основной файл.
Ответ 2
Если вы используете IBM JVM, скачать анализатор IBM Thread и Monitor Dump Analyzer. Это отличный инструмент. Он предоставляет подробные сведения о потоке и может указывать на взаимоблокировки и т.д. Следующий пост в блоге дает хороший обзор того, как его использовать.
Ответ 3
Возможно, VisualVM может помочь (у меня еще не было возможности попробовать это самостоятельно). Ссылка:
http://java.sun.com/javase/6/docs/technotes/guides/visualvm/coredumps.html
Ответ 4
Вы уверены, что основной дамп вам нужен? Это будет содержать необработанные кишки запущенной JVM, а не информацию на уровне Java. Возможно, свалка кучи JVM - это то, что вам нужно.
Ответ 5
Собственно, VisualVM может обрабатывать дамп ядра приложения.
Просто запустите "Файл/Добавить VM Coredump" и добавьте новое приложение в проводник приложения. Затем вы можете взять дамп потока или кучу этой JVM.
Ответ 6
Попробуйте анализатор стека lady4j, это может помочь вам:
http://www.lady4j.com/solveStack.jsp
Ответ 7
IBM предоставляет ряд инструментов, которые также могут использоваться на солнечном jvm. Взгляните на некоторые из проектов на буквенных знаках, они предоставляют анализаторы кучи и нитей для дампов
Карл
Ответ 8
Я рекомендую вам попробовать Netbeans Profiler. Он имеет богатый набор инструментов для анализа в реальном времени.
Инструменты от IbM стоит попробовать для автономного анализа.
Ответ 9
jhat является одним из лучших, которые я использовал до сих пор. Чтобы взять основной дамп, я думаю, что вам лучше использовать jmap и jps вместо gcore (я его не использовал). Проверьте ссылку, чтобы увидеть, как использовать jhat,
http://www.lshift.net/blog/2006/03/08/java-memory-profiling-with-jmap-and-jhat
Ответ 10
См. http://www.oracle.com/technetwork/java/javase/tsg-vm-149989.pdf. Вы можете использовать "jdb" непосредственно в основном файле.