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
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
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
jconsole
Similar a jvisualvm, ambas son interfaces gráficas
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.
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
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
Histograma
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
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
Sospechosos de fugas
Mat nos ayudará a analizar el problema, podemos encontrar qué hilo, verificar los datos de la pila para encontrar el problema