java garbage-collection jvm jvm-hotspot verbosegc

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]