Что такое дамп?
Дамп потока — это снимок того, что в данный момент выполняется в вашей Java-программе .
Хотя формат и содержимое дампа потоков могут различаться у разных поставщиков Java, как минимум, он предоставляет вам список трассировок стека для всех потоков Java на виртуальной машине Java .
Используя эту информацию, вы можете analyze the problem самостоятельно или работайте с теми, кто написал работающий код, чтобы проанализировать проблему.
Тема свалка просто список всех потоков и полный стек след кода , выполняемого на каждом потоке. Если вы являетесь администратором сервера приложений J2EE и никогда не занимались разработкой, концепция трассировки стека может быть вам чужды.
Трассировка стека — это дамп текущего стека выполнения, который показывает вызовы методов, выполняющиеся в этом потоке снизу вверх.
Вот образец дампа темы:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
crunchifyThread3
Java. яз. Thread. Состояние : Runnable
на солнце. управление . ThreadImpl . getThreadInfo1 ( Native Метод )
на солнце. управление . ThreadImpl . getThreadInfo ( ThreadImpl . Java : 174 )
на ком . crunchify. учебники . CrunchifySynchronizeThread . getThreadDump ( CrunchifyThreadDeadLock . java : 64 )
на ком . crunchify. учебники . CrunchifySynchronizeThread . run ( CrunchifyThreadDeadLock . java : 50 )
в Яве . яз. Thread. запустить ( Тема . Java : 722 )
crunchifyThread2
Java. яз. Thread. Состояние : BLOCKED
на ком . crunchify. учебники . CrunchifySynchronizeThread . run ( CrunchifyThreadDeadLock . java : 53 )
в Яве . яз. Thread. запустить ( Тема . Java : 722 )
crunchifyThread1
Java. яз. Thread. Состояние : BLOCKED
на ком . crunchify. учебники . CrunchifySynchronizeThread . run ( CrunchifyThreadDeadLock . java : 53 )
в Яве . яз. Thread. запустить ( Тема . Java : 722 )
Диспетчер сигналов
Java. яз. Thread. Состояние : Runnable
«Финалайзер»
Java. яз. Thread. Состояние : ОЖИДАНИЯ
в Яве . яз. Объект . ждать (Родной Метод )
в Яве . яз. ссылка ReferenceQueue . удалить ( ReferenceQueue . Java : 135 )
в Яве . яз. ссылка ReferenceQueue . удалить ( ReferenceQueue . Java : 151 )
в Яве . яз. ссылка Финализатор $ FinalizerThread . запустить ( Финализатор . Ява : 189 )
«Ссылочный обработчик»
Java. яз. Thread. Состояние : ОЖИДАНИЯ
в Яве . яз. Объект . ждать (Родной Метод )
в Яве . яз. Объект . подождите ( Объект . Java : 503 )
в Яве . яз. ссылка Ссылка $ ReferenceHandler . запустить ( Справ . Ява : 133 )
|
Java-метод для создания дампа потока:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/ **
* @author Crunchify.com
*
* /
общественности статический строка crunchifyGenerateThreadDump ( ) {
окончательный StringBuilder dump знак равно новый StringBuilder ( ) ;
окончательный ThreadMXBean threadMXBean знак равно Управление фабрики . getThreadMXBean ( ) ;
окончательный ThreadInfo [ ] threadInfos знак равно threadMXBean . getThreadInfo ( threadMXBean . getAllThreadIds ( ) , 100 ) ;
за ( ТемаИнфо ТемаИнфо : нитьИнфос ) {
свалка. добавить ( '' ' ) ;
свалка. append ( threadInfo . getThreadName ( ) ) ;
свалка. добавить ( / ) ;
окончательный Thread. Государство государство знак равно ThreadInfo. getThreadState ( ) ;
свалка. append ( / n java.lang.Thread.State: ) ;
свалка. приложение ( состояние ) ;
окончательный StackTraceElement [ ] stackTraceElements знак равно ThreadInfo. getStackTrace ( ) ;
за ( окончательный StackTraceElement stackTraceElement : stackTraceElements ) {
свалка. append ( / n at ) ;
свалка. append ( stackTraceElement ) ;
}
свалка. добавить ( / н / н ) ;
}
вернуть свалка. toString ( ) ;
}
|
В моем предыдущем примере Java Deadlock я использовал тот же метод для создания дампа потока. Вот список всех примеров Java и Spring MVC, которые могут вас заинтересовать.
Хотите сгенерировать дамп кучи памяти на OOM?
Пожалуйста, используйте -XX:+HeapDumpOnOutOfMemory параметр при запуске приложения Java.
0.00 (0%) 0 votes







