hilo de impresión de Java, volcado de montón

Ver pid

El comando ips encuentra el pid del nombre de su sistema actual. El pid es muy importante. Muchos comandos posteriores se consultan basándose en el pid.
Nota: el tomcat es bootstrap
tomcat es bootstrap

Ver instantánea del hilo


Ejemplo de jstack -l pid :
jstack -l 12340> a.text
Obtener información de instantánea del hilo y redirigir al directorio actual a.text
Inserte la descripción de la imagen aquí

Nota: Hablaremos sobre el análisis de instantáneas de subprocesos más adelante.

Instantánea de montón

jmap -dump: formato = b, archivo = dump.txt pid
jmap -dump: formato = b, archivo = dump.txt 12340

Las instantáneas necesitan herramientas

jvisualvm

Jdk viene con una interfaz gráfica, que puede generar automáticamente volcados de subprocesos, volcados de pila y visualizar herramientas de asignación de memoria
Inserte la descripción de la imagen aquí

jconsole

Similar a jvisualvm, ambas son interfaces gráficas
Inserte la descripción de la imagen aquí

Imprime automáticamente el volcado de pila cuando la memoria se desborda

-XX: + HeapDumpOnOutOfMemoryError
-XX: HeapDumpPath = D: \ temp
-Xms20M
-Xmx20M

Cuando la memoria se desborde, descargue el archivo y luego analice el uso de la memoria del montón de acuerdo con la herramienta.
Inserte la descripción de la imagen aquí

jmap -head pid

Uso de la memoria del montón de impresión

Imprimir registro de gc

-XX: + PrintGCDateStamps
-XX: + PrintGCDetails
-Xloggc: D: / temp / gclogs

Inserte la descripción de la imagen aquí

MinorGC

2020-09-06T15: 45: 38.653 + 0800: 0.330: [GC (Fallo de asignación) [PSYoungGen: 5632K-> 504K (6144K)] 5632K-> 1496K (19968K), 0.0019669 segundos] [Tiempos: usuario = 0.00 sys = 0.00, real = 0.00 segundos]

Análisis :
2020-09-06T15: 45: 38 : hora
38.653 + 0800: 0.330 : jvm start gc time
GC (Allocation Failure) : la identificación de MinorGC y FullGC, esta vez representa MinorGC
PSYoungGen : se refiere a Parallel Scavenge) es Eden + FromSpace
5632K-> 504K (6144K) : el uso de la generación joven (tamaño de la generación joven)
5632K-> 1496K (19968K) : el uso de todo el montón antes y después de la recolección, el tamaño total del montón es
0.0019669 segundos : el ParNew coleccionista marca y copia viva a la generación joven El tiempo dedicado por el objeto

FullGC

2020-09-06T15: 45: 39.978 + 0800: 1.656: [GC completo (umbral de GC de metadatos) [PSYoungGen: 441K-> 0K (5120K)] [ParOldGen: 10846K-> 6883K (13824K)] 11287K-> 6883K (18944K ), [Metaspace: 20298K-> 20298K (1067008K)], 0.0258899 segundos] [Tiempos: usuario = 0.16 sys = 0.00, real = 0.03 segundos]

manifestación

mat analiza la memoria, el estado del hilo, etc.

Información de la interfaz principal
Inserte la descripción de la imagen aquí

Histograma

Inserte la descripción de la imagen aquí
Puedes ver qué tipo de memoria en qué objetos ocupan más los objetos, en este momento nos aseguramos de que el objeto de esta clase de alumno ocupe la mayor parte de la memoria. Seguimos analizando

Inserte la descripción de la imagen aquí
Clic derecho: Fusionar la ruta más corta a las raíces de GC -> excluir todas las referencias fantasmas / débiles / suaves, etc. para ver la cadena de llamadas y encontrar el hilo @ 0xff3fe388
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Sospechosos de fugas

Inserte la descripción de la imagen aquí
Mat nos ayudará a analizar el problema, podemos encontrar qué hilo, verificar los datos de la pila para encontrar el problema
Inserte la descripción de la imagen aquí

** Ver seguimiento de pila. ** Ver directamente la pila de subprocesos de desbordamiento de memoria

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_37904966/article/details/108305011
Recomendado
Clasificación