Este artículo estudia principalmente la migración de los parámetros de registro de Java9 GC.
Registro que unifica JVM y GC
Java9 ha introducido un marco de registro unificado, y también ha incluido la salida y configuración de registro relacionada con GC.
JEP relacionado (propuesta de mejora de JDK)
Sintaxis xlog
-Xlog[:option] option := [<what>][:[<output>][:[<decorators>][:<output-options>]]] 'help' 'disable' what := <selector>[,...] selector := <tag-set>[*][=<level>] tag-set := <tag>[+...] 'all' tag := name of tag level := trace debug info warning error output := 'stderr' 'stdout' [file =] <silename> decoradores: = <decorator> [, ...] 'Ninguno' decorador: = Tiempo de extracción Timemillis Uptimemillis timenanos Uptimenanos uptimenanos pid pid etiquetas de nivel de nivel de salida: = <extution_option> [, ...] OPTICIÓN DE Outputy: = fileCoUnt = <<RENTE DE File
Qué
Principalmente configurar la etiqueta y el nivel
etiqueta
Donde todas representan todas las etiquetas, las otras son las siguientes:
Agregar, edad, asignación, anotación, AOT, argumentos, adjunte, barrera, sesedlocking, bloques, bot, punto de ruptura, bytecode, censo, clase, classShisto, limpieza, compactación, comparador, restricciones, constantPool, cooPs, CPU, ceten, datos, predeterminado, d ump, ergo, evento, excepciones, exit, dichetyping, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, freeList, FreeList, freeList, freeList, freeList, freeSt, freeList, FreeList, freeS hashtables, heap, humongous, ihop, iklass, init, itables, jfr, jni, jvmti, liveness, load, loader, logging, mark, marking, metadata, metaspace, method, mu, modules, monitorinflatio n, monitormismatch, nmethod, normalize, objecttagging, obsolete, ooopmap, os, pagesize, parser, patch, ruta, fases, plab, preorden, promoción, protección domain, purga, redefinir, ref, refinar, región, remetida, resolución, safePoint, scange, scru b, configuración, stackmap, stacktrace, stackwalk, start, startuptime, state, statdedup, string, string, subclass, sobrevivor, barrido, sistema, tarea, hilo, tiempo, tiempo, tiempo, Tiempo de tiempo, Tlab, tt -StringTable, Subclass, Survivor, Sweet, System, Task, Time, Time, Time, Timer, TLOB, TATUD, SUTTABLE. verificación, verificación, vMoperation, VTable, Workgang
nivel
Principalmente dividido en OFF, rastrear, depurar, información, advertencia, error
producción
- stdout (`envía salida a stdout`)- stderr (` envía salida a stderr`)- file = filename (`envía salida a archivos de texto`) `)
Hay tres tipos como arriba. Si especifica un archivo, puede usar la variable %P para representar el PID actual de JVM y usar %T para representar la marca de tiempo de inicio de JVM. Por ejemplo
-Xlog: GC: DemoApp-GC-%P-%T.Log
El nombre del archivo de salida es el siguiente:
DemoApp-GC-1678-2018-03-01_21-44-18.log
decoradores
Si no se especifica, el valor predeterminado es el tiempo de actividad, el nivel y las etiquetas. Por ejemplo
[3.080S] [info] [GC, CPU] GC (5) Usuario = 0.03S Sys = 0.00s real = 0.01S
Ejemplo
-Xlog: gc = trace: file = gctrace.txt: uptimemillis, pid: fileCount = 5, filesize = 1024
La etiqueta es GC, Levle es traza, los archivos de rotación son 5, cada archivo es 1m, el nombre del archivo es gctrace.txt, los decrotadores son uptimemillis y pid
Instancia de salida
[1110ms] [1867] GC (2) Observación de pausa 17m-> 17m (256m) 2.024ms [1110ms] [1867] GC (2) Finalice los datos en vivo 0.000ms [1110ms] [1867] GC (2) PAUSE CleanUp 17m-> 17m (256M) 0.177Ms [1112Ms] [1867] GC (2) CILECT 7.470 ms [2951ms] [1867] GC (3) Marca inicial de pausa (umbral de metadatos GC) 149m-> 30m (256m) 27.175ms [2951ms] [1867] GC (4) Ciclo concurrente [2972ms] [1867] GC (4) Pasión de pausa 32M-> 32M (256M) 5.132 ms [2974ms] [1867] GC (4) Finalice los datos en vivo 0.000 ms [2974ms] [1867] GC (4) Limpieza de pausa 32M-> 32M (256M) 0.214ms [2976MS] [1867] GC (4) Ciclo concurrente 25.422MS
Migración de parámetros relacionados de GC antiguo
| Legacy Garbage Recolection (GC) Bandera | Configuración de XLog | Comentario |
|---|---|---|
| G1PrintHeapregions | -Xlog: gc+región = traza | No aplicable |
| GcLogFilsize | No hay configuración disponible | La rotación del registro es manejada por el marco. |
| NumberOfGCLOGFILES | No aplicable | La rotación del registro es manejada por el marco. |
| PrintadaptiveSePolicy | -Xlog: ergo*= nivel | Use un nivel de depuración para la mayor parte de la información, o un nivel de rastreo para todo lo que se registró para PrintadaptiveSeSePolicy. |
| Printgc | -Xlog: GC | No aplicable |
| PrintgcapplicationConcurrenttime | -Xlog: SafePoint | Tenga en cuenta que PrintgCapplicationConcurrentTime y PrintgCapplicationStoppedtime se registran en la misma etiqueta y no se separan en el nuevo registro. |
| PrintgcapplicationStoppedtime | -Xlog: SafePoint | Tenga en cuenta que PrintgCapplationConcurrentTime y PrintgCapplicationStoppedtime se registran en la misma etiqueta y no se separan en el nuevo registro. |
| PrintgcCause | No aplicable | La causa GC ahora siempre está registrada. |
| PrintgcdateSpamps | No aplicable | El marco registra las sellos de fecha. |
| Printgcdetails | -Xlog: GC* | No aplicable |
| Printgcid | No aplicable | GC ID ahora siempre está registrada. |
| PrintgcTaskTimestamps | -Xlog: tarea*= debug | No aplicable |
| Printgctimestamps | No aplicable | El marco registra las marcas de tiempo. |
| PrintheApatgc | -Xlog: GC+Heap = Trace | No aplicable |
| Printreferencegc | -Xlog: ref*= depurar | Tenga en cuenta que en el registro antiguo, PrintreferenceGC tuvo un efecto solo si también se habilitaba printgcdetails. |
| PrintStringdeduplicationStadistics | -Xlog: stringdedup*= debug | No aplicable |
| Distribución de printtenuring | -Xlog: edad*= nivel | Use un nivel de depuración para la información más relevante, o un nivel de rastreo para todo lo que se registró para la distribución de printtenuring. |
| UseGCLogFilerotation | No aplicable | Lo que se registró para la distribución de printtenuring. |
Migración de parámetros de tiempo de ejecución de Legacy
| Legacy Runtime Flag | Configuración de XLog | Comentario |
|---|---|---|
| TraceExcepciones | -Xlog: excepciones = información | No aplicable |
| TraceClassLoading | -Xlog: class+load = nivel | Use nivel = información para información regular o nivel = depuración para información adicional. En sintaxis de registro unificado, -verbose: clase es igual a -xlog: class+load = info, class+Descargue = info. |
| TraceClassLoadingPreorder | -Xlog: class+preorden = depuración | No aplicable |
| Traceclassunloading | -Xlog: clase+descarga = nivel | Use nivel = información para información regular o nivel = traza para información adicional. En sintaxis de registro unificado, -verbose: clase es igual a -xlog: class+load = info, class+Descargue = info. |
| Verboseverificación | -Xlog: verificación = información | No aplicable |
| Traceclasspaths | -Xlog: class+rath = info | No aplicable |
| Traceclassresolución | -Xlog: class+resolve = debug | No aplicable |
| Traceclassinitialización | -Xlog: class+init = info | No aplicable |
| Traceloaderconestraciones | -Xlog: clase+cargador+restricciones = información | No aplicable |
| Traceclassloaderdata | -Xlog: clase+cargador+data = nivel | Use nivel = depuración para información o nivel regular = traza para información adicional. |
| TrazafePointCleanuptime | -Xlog: SafePoint+Cleanup = Info | No aplicable |
| Traza | -Xlog: safePoint = debug | No aplicable |
| Tracemonitorinflación | -Xlog: monitorInflation = depuración | No aplicable |
| Rastreado | -Xlog: sesedlocking = nivel | Use nivel = información para información regular o nivel = traza para información adicional. |
| Traceredefineclasses | -Xlog: redefine+clase*= nivel | nivel = info, = depuración, y = traza proporciona cantidades crecientes de información. |
Java9 también unifica la selección y la salida del registro de GC en XLOG, y se puede migrar de acuerdo con la tabla de migración dada por el funcionario.