Ява, получи дамп ядра - PullRequest
       7

Ява, получи дамп ядра

1 голос
/ 24 декабря 2010

Я хотел бы иметь возможность анализировать дамп ядра Java таким же образом, как можно было бы анализировать дамп ядра из процесса в системе UNIX. Однако меня не интересует информация из процесса, только стек уровня JVM, куча и т. Д. Базовый дамп будет содержать информацию о методах Java, переменных и т. Д.

  1. Как я могу сказать JVM создать дамп ядра на уровне Java?
  2. Что такое хороший инструмент для анализа указанного дампа?

Например, если этот код был выполнен

public static void foo() {
  //trigger core dump
}
public static void main(String args[]) {
 foo();
}

Я бы получил дамп ядра, показывающий стек main-->foo

Ответы [ 3 ]

2 голосов
/ 24 декабря 2010

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

1 голос
/ 24 декабря 2010

jstack

Выводит трассировку стека всех запущенных потоков.Вы должны быть тем же пользователем, что и запущенный процесс Java.

0 голосов
/ 24 декабря 2010

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

Когда у вас есть дамп кучи, вы можете использовать инструмент, подобный Eclipse Memory Analyzer Tool , чтобы проверить дамп.трассировка стека, попробуйте что-то вроде Thread.currentThread (). getStackTrace () .

...