Разница между javacore, дампом потока и дампом кучи в Websphere - PullRequest
50 голосов
/ 19 августа 2009

Может кто-нибудь сказать мне точную разницу между javacore, потоком дампа и дампом кучи? При какой ситуации каждый из них используется ??

Ответы [ 5 ]

51 голосов
/ 31 августа 2010

Дамп потока - это дамп стеков всех активных потоков. Таким образом, полезно для анализа того, что представляет собой приложение в определенный момент времени, и если оно выполняется через определенные промежутки времени, удобно для диагностики некоторых видов проблем с «выполнением» (например, блокировка потока).

Дамп кучи - это дамп состояния памяти кучи Java. Это полезно для анализа использования памяти приложением в какой-то момент времени, что очень удобно для диагностики некоторых проблем с памятью, и если это делается через определенные промежутки времени для диагностики утечек памяти.

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

Что касается WebSphere, то файл javacore представляет собой дамп потока, хотя и с большим количеством другой информации, такой как блокировки и загруженные классы, и некоторой информацией об ограниченном использовании памяти, а файл PHD является дампом кучи.

Если вы хотите прочитать файл javacore, вы можете сделать это вручную, но есть инструмент IBM (BM Thread and Monitor Dump Analyzer), который делает его проще. Если вы хотите прочитать файл дампа кучи, вам нужен один из многих инструментов IBM: MDD4J или Heap Analyzer.

2 голосов
/ 13 августа 2017

Дамп заголовка JVM - это снимок памяти кучи JVM за заданное время. Так что это просто представление кучи JVM. Это состояние объектов.

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

Дамп заголовка содержит больше информации об уровне класса java, чем дамп потока. Например, Head dump хорош для анализа проблем с кучей памяти JVM и ошибок OutOfMemoryError. Дамп заголовка JVM генерируется автоматически, когда происходит что-то вроде OutOfMemoryError. Дамп кучи можно создать вручную, убив процесс с помощью kill -3. Создание дампа кучи - это сложная вычислительная задача, которая, вероятно, приведет к зависанию вашего jvm. так что это не метонд, чтобы использовать оскорбительно. Куча может быть проанализирована с помощью таких инструментов, как анализатор памяти Eclipse.

Дамп ядра - это использование объектов на уровне памяти. Он имеет больше информации, чем свалка головы. дамп ядра не создается, когда мы намеренно убиваем процесс.

1 голос
/ 26 ноября 2009

Дамп потока - это дамп трассировки стека всех потоков, т. Е. Как если бы каждый поток внезапно выдал исключение и распечатал это. Это сделано для того, чтобы вы могли видеть, что каждый поток делает в какой-то конкретной точке, и, например, очень хорошо ловить тупики.

Дамп кучи - это «двоичный дамп» полной памяти, которую использует JVM, и он полезен, например, если вам нужно знать, почему у вас заканчивается память - в дампе кучи вы можете, например, увидеть, что вы иметь один миллиард объектов User, хотя у вас должно быть только тысяча, что указывает на проблему с удержанием памяти.

1 голос
/ 25 августа 2009

Дампы кучи каждый раз, когда вы хотите увидеть, что хранится в памяти. Ошибки нехватки памяти Кучи дампов - изображение объектов в памяти - используется для анализа памяти Ядра Java - также известные как дампы потоков или дампы Java, используемые для просмотра активности потоков внутри JVM в данный момент времени. IBM Javacores должно много дополнительной информации, кроме только потоков и стеков - используется для определения зависаний, взаимоблокировок и причин снижения производительности Системные ядра

0 голосов
/ 08 февраля 2016

Дампы потоков - это javacore show снимок потоков, работающих в JVM, они полезны для устранения проблем зависания, они предоставляют информацию о мертвых блокировках уровня java, а также версия javacores IBm предоставляет гораздо более полезную информацию, такую ​​как использование кучи, процессор использование каждого потока и общее использование кучи, а также количество классов, загружаемых JVM.

Heapdumps, предоставляет информацию об использовании кучи Java JVM, которая может использоваться для устранения утечек памяти. Heapdumps генерируются IBM JVM, когда JVM работает с ошибкой outofmemoryerror, Heapdumps предназначены только для утечки кучи в java, собственная ошибка нехватки памяти может привести к системным дампам, как правило, с ошибкой общей защиты "GPF".

...