java - Analizando registros de gc
garbage-collection jvm (1)
Desafortunadamente,
PrintGCApplicationStoppedTime
es un nombre engañoso para esta opción JVM.
De hecho, imprime el tiempo pasado dentro de los puntos seguros. Las pausas de Safepoint ocurren no solo debido a la recolección de basura, sino por muchas otras razones:
- Desoptimización
- Revocación de bloqueo sesgada
- Volcado de hilos
- Inspección del montón
- Redifinición de clase
- etc. (ver la lista)
Los puntos seguros pueden suceder periódicamente incluso sin una operación de VM solicitada para desinflar los monitores inactivos, realizar una limpieza de JIT, etc.
Consulte
-XX:GuaranteedSafepointInterval
opción VM
-XX:GuaranteedSafepointInterval
(1000 milisegundos de forma predeterminada).
Use
-XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1
para volcar más información sobre los puntos seguros.
Estoy usando las
-XX:+PrintGCApplicationStoppedTime
y
-XX:+PrintGCApplicationConcurrentTime
para activar el registro gc.
¡Pero descubrí que solo después de 4 0r 5 impresiones de
PrintGCApplicationStoppedTime
mis detalles reales de los registros de gc se imprimieron a través de
-XX:+PrintGCDetails
comando
-XX:+PrintGCDetails
!
Por definición,
PrintGCApplicationStoppedTime
imprime el tiempo de detención de la aplicación para cada gc.
Pero no tengo claro por qué se imprime como en el ejemplo que se muestra a continuación.
Es porque
PrintGCApplicationStoppedTime
solo imprime después de cada alcance de punto seguro
(o)
el archivo de registro será registrado por diferentes hilos de gc. Estoy usando barrido concurrente para GC completo y ParNew para la generación joven
Mi aplicación es una aplicación web.
O / p Pattern- Me estoy poniendo así:
Application time: 0.3847031 seconds
Total time for which application threads were stopped: 0.3135419 seconds
Application time: 0.1520723 seconds
Total time for which application threads were stopped: 0.1993920 seconds
Application time: 0.1188219 seconds
Total time for which application threads were stopped: 0.1993920 seconds
Application time: 0.1188219 seconds
Total time for which application threads were stopped: 0.1993920 seconds
Application time: 0.1188219 seconds
Total time for which application threads were stopped: 0.1993920 seconds
Application time: 0.1188219 seconds
1.229: [GC 1.229: [ParNew: 256000K->51200K(256000K), 0.1509756 secs] 426536K->334728K(997376K), 0.1510198 secs] [Times: user=0.85 sys=0.07, real=0.15 secs]