garbage collection - collector - ¿Cómo redirigir la salida de recolección de basura detallado a un archivo?
activar garbage collector (4)
¿Cómo puedo redirigir la salida de recolección de basura detallado a un archivo? El sitio web de Sun muestra un ejemplo para Unix pero no funciona para Windows.
Java 9 y registro JVM unificado
JEP 158 introduce un sistema de registro común para todos los componentes de la JVM que cambiará (y simplificará la IMO) cómo funciona el registro con GC. JEP 158 agregó una nueva opción de línea de comando para controlar el registro de todos los componentes de la JVM:
-Xlog
Por ejemplo, la siguiente opción:
-Xlog:gc
registrará los mensajes etiquetados con etiqueta gc
usando el nivel de info
para stdout
. O este:
-Xlog:gc=debug:file=gc.txt:none
registraría los mensajes etiquetados con la etiqueta gc
usando el nivel de debug
en un archivo llamado gc.txt
sin decoraciones. Para una discusión más detallada, puede consultar los ejemplos en la página JEP .
Para agregar a las respuestas anteriores, hay un buen artículo: Banderas JVM útiles: Parte 8 (Registro GC) por Patrick Peschlow.
Un breve extracto:
El indicador -XX:+PrintGC
(o el alias -verbose:gc
) activa el modo de registro GC "simple"
Por defecto, el registro del GC se escribe en stdout. Con -Xloggc:<file>
podemos especificar un archivo de salida. Tenga en cuenta que este indicador establece implícitamente -XX:+PrintGC
y -XX:+PrintGCTimeStamps
también.
Si usamos -XX:+PrintGCDetails
lugar de -XX:+PrintGC
, activamos el modo de registro "detallado" de GC que difiere según el algoritmo de GC utilizado.
Con -XX:+PrintGCTimeStamps
una marca de tiempo que refleja el tiempo real transcurrido en segundos desde que se agrega el inicio de JVM a cada línea.
Si especificamos -XX:+PrintGCDateStamps
cada línea comienza con la fecha y hora absolutas.
Si además desea canalizar la salida a un archivo separado, puede hacer:
En una JVM Sun:
-Xloggc:C:/whereever/jvm.log -verbose:gc -XX:+PrintGCDateStamps
EN UNA IBM JVM:
-Xverbosegclog:C:/whereever/jvm.log
De la salida de java -X
:
-Xloggc:<file> log GC status to a file with time stamps
Documentado here :
-Xloggc: nombre de archivo
Establece el archivo al que se debe redirigir la información detallada de eventos del GC para el registro. La información escrita en este archivo es similar a la salida de
-verbose:gc
con el tiempo transcurrido desde el primer evento del GC que precede a cada evento registrado. La opción-Xloggc
anula-verbose:gc
si ambas se dan con el mismo comandojava
.Ejemplo:
-Xloggc:garbage-collection.log
Entonces el resultado se ve así:
0.590: [GC 896K->278K(5056K), 0.0096650 secs] 0.906: [GC 1174K->774K(5056K), 0.0106856 secs] 1.320: [GC 1670K->1009K(5056K), 0.0101132 secs] 1.459: [GC 1902K->1055K(5056K), 0.0030196 secs] 1.600: [GC 1951K->1161K(5056K), 0.0032375 secs] 1.686: [GC 1805K->1238K(5056K), 0.0034732 secs] 1.690: [Full GC 1238K->1238K(5056K), 0.0631661 secs] 1.874: [GC 62133K->61257K(65060K), 0.0014464 secs]