Red de conocimiento informático - Material del sitio web - Cómo ver los tipos de GC de Java

Cómo ver los tipos de GC de Java

¿Cuáles son los tipos de GC en Java?

Parámetro

Descripción

UseSerialGC

El valor predeterminado se usa para máquinas virtuales que se ejecutan en modo cliente, active este parámetro de cambio

p>

Utilice una combinación de recolector antiguo en serie para la recolección de basura.

UseParNewGC

Después de activar este parámetro de cambio, la combinación del recolector ParNew Serial Old se utilizará para realizar la recolección de basura.

UseConcMarkSweepGC

Después de activar este parámetro de cambio, se utilizará una combinación del recolector ParNew CMS Serial Old para realizar la recolección de basura. Cuando el recolector CMS falla en modo concurrente, Serial Old lo hará. actuar como recolector de basura.

UseParallelGC

Se usa de forma predeterminada para máquinas virtuales que se ejecutan en modo servidor. Al activar este parámetro de cambio, se puede usar la combinación del recolector Parallel Scavenge Serial Old para la recolección de basura.

UseParallelOldGC

Cuando este parámetro de cambio está activado, se utilizará una combinación de escaneo paralelo y recolector antiguo paralelo para realizar la recolección de basura.

Después de iniciar el programa Java, puede consultar el proceso Java actualmente en ejecución a través del proceso jps watch, y puede encontrar el proceso utilizado a través del

proceso jinfo -flag UseSerialGC

estrategia gc, debido a que estos parámetros son constantes booleanas, si se usa la estrategia gc, aparecerá un signo; de lo contrario, aparecerá un signo -.

Usando -XX: la estrategia de GC anterior habilitará la estrategia de GC correspondiente.

Ver registro de GC

Puede especificar el tipo de GC correspondiente agregando parámetros en el comando java e imprimir la información del registro de GC y enviarla a un archivo.

El registro del GC se escribe reemplazando (gt;) en lugar de agregar (gt; gt;), por lo que si se escribe el mismo archivo la próxima vez, el contenido del GC anterior se borrará.

Lista de parámetros correspondientes

-XX: PrintGC genera registros de GC

-XX: PrintGCDetails genera registros detallados de GC

-XX: PrintGCTimeStamps genera la marca de tiempo del GC (en forma de hora base)

-XX: PrintGCDateStamps genera la marca de tiempo del GC (en forma de fecha, por ejemplo, 2013-05-04T21:53:59.234 0800)

-XX: PrintHeapAtGC imprime la información del montón antes y después de ejecutar GC

-Xloggc: ./logs/gc.log ruta de salida del archivo de registro

Lo siguiente Los parámetros se utilizan para la impresión de registros:

-XX: PrintGCDateStamps -XX: PrintGCDetails -Xloggc:./gclogs

Para una línea de registros de un bucle de nueva generación, su contenido básico es como sigue:

2014-07-18T16:02:17.606 0800: 611.633: [GC 611.633: [DefNew: 843458K-gt; 2K(948864K), .0059180 segundos] 2186589K-gt; (3057292 K), 0,0059490 segundos] [Tiempos: usuario= 0,0000K, 0,0059490 segundos] (tiempo: usuario=0,0000) [tiempo: usuario=0,00 sys=0,00, real=0,00 segundos]

El significado es aproximado de la siguiente manera:

2014-07- 18T16: 02: 17.606 0800 (marca de tiempo actual): 611.633 (marca de tiempo): [GC (representa GC de generación joven) 611.633: [DefNew (GC de generación joven en serie de un solo subproceso) ): 843458K (el tamaño de la generación joven antes de la recolección de basura) -gt; 2K (el tamaño de la generación joven después de la recolección) (948864K (el tamaño total de la generación joven)), 0.0059180 segundos (este tiempo de recolección)] 2186589K (el tamaño de todo el montón antes de la recolección de basura) -gt; 1343132K (después de la recolección de basura) El tamaño de todo el montón) (3057292K (tamaño total del montón)), 0.0059490 segundos (este tiempo de reciclaje)] [Times.[user= 0,00 (tiempo utilizado por el usuario) sys=0,00 (tiempo utilizado por el sistema), real=0,00 segundos (tiempo real empleado)]

El registro recuperado de la versión anterior es el siguiente:

2014-07-18T16: 19: 16.794 0800: 1630.821: [GC 1630.821: [DefNew: 1005567K-gt; 111679K(1005568K), 0.9152360 segs] 1631.736: [Tenured:

2573912K- gt; 1340650K(2574068K), 1,8511050 segundos] 3122548K-gt; 1340650K(3579 636K), [Permanente: 17882K-gt; 57 sis=0,22, real=2,79 segundos ]

El final del registro de gc en el registro de gc parece ser una instantánea antes del final de la operación del sistema:

Montón

def new generate

ion total 1005568K, usado 111158K [0x00000006fae00000, 0x000000073f110000, 0x0000000750350000 0x0000000750350000)

eden space 893888K, 12 usado [0 x00000006fae00000, 0x0000000701710e90, 0x00000007316f0000)

De 111680K de espacio, 3 usados ​​[ 0x0000000738400000, 0x000000073877c9b0, 0x000000073f110000)

a 111680K de espacio, 0 usado [0x00000007316f0000, 0x00000007316f0000, 0x 00000007316f0000)

Para espacio de 111680K, se usa 0 [0x00000007316f0000, 0x00000007316f0000 0x00000007316f0000, 0x0000000738400000)

La generación reservada total es 2234420K, se han utilizado 1347671K [0x0000000750350000, 0x00000007d895d000, 0x00000007fae00000, 0x00000007d895d000, 0x00000007d89 5d00 0]. 0x00000007fae00000)

Espacio 2234420K, usado 60 [0x0000000750350000, 0x00000007a2765cb8, 0x00000007a2765e00, 0x00000007d895d000)

> La generación permanente comprimida total es 21248K y se han utilizado 17994K [0x00000007fae00000, 0x00000007fc2c0000, 0x0000000800000000)

Espacio 21248K, 84 usados ​​[0x00000007fae00000, 0x00000007fbf92a50, 0x00000007fbf92c00, 0x00000007fc2c0000)

No hay espacio compartido configurado.

Análisis sin conexión de registros de GC

Puede utilizar algunas herramientas sin conexión para analizar registros de GC, como gchisto de Sun (/chewiebug/GCViewer). Estas herramientas de código abierto permiten a los usuarios descargar su código fuente y verlo. directamente a través de herramientas de control de versiones, analícelo sin conexión.

A continuación se toma gcviewer como ejemplo para analizar brevemente el análisis fuera de línea de los registros de gc. El proyecto de código fuente de gcviewer es una estructura de maven y se puede empaquetar directamente usando maven. Aquí está la versión compilada 1.34. Esta versión La instantánea se ha subido al archivo adjunto.

Cabe señalar que gcviewer admite registros de gc generados por varios parámetros. Puede cargar directamente los registros de gc generados ejecutando java -jar: