¿Hay alguna manera de reenviar la información de recolección de basura (por ejemplo, la salida -XX:+PrintGCDetails
o -verbose:gc
) a un registrador dentro de la aplicación Java (sl4j + logback en mi caso)?Registrando información de GC en la aplicación
Respuesta
Esos mensajes son generados por el proceso nativo JVM y no de código Java, por lo que sólo pueden
- redirigir la salida a archivo usando
-Xloggc
(sin rotación) - tubería stdout directamente (varias opciones de rotación)
Un enfoque interesante sería la de redirigir gc.log a una tubería con nombre -Xloggc:/my/named/pipe
How to write GC log to named pipe
leyó entonces la forma que la tubería de la propia aplicación : How to open a Windows named pipe from Java?
y registrar a un arbitrario (p. async rolling) logback logger del código.
Probé eso en una máquina con Windows. Desafortunadamente, es más complicado configurar Windows que Linux.
En Windows funciona básicamente con la ayuda de un Powershell script adicional (también puede ser una aplicación dedicada). Este sample project también contiene una aplicación de demostración que se puede utilizar de inmediato para probar la redirección de registros de GC a Logback a través de SLF4J.
- 1. log4j registrando dos veces
- 2. Tuning GC para la aplicación de audio Java
- 3. registrando en ruby
- 4. ¡Mi aplicación ejecuta constantemente GC completo!
- 5. Registrando/monitoreando todas las llamadas de funciones desde una aplicación
- 6. GC Android - LogCat siempre muestra la actividad de GC
- 7. Guardar información del usuario en la configuración de la aplicación
- 8. registrando com dll en wix
- 9. Registrando datos VMStat en el archivo
- 10. AppDomains y GC Heap
- 11. ¿Estás registrando aplicaciones web Java?
- 12. OpenLayers event.register no registrando
- 13. Registrando con XSLT
- 14. Ver solo registrando MotionEvent.ACTION_DOWN
- 15. Con las JVM recientes de Sun (1.6), ¿es posible obtener información de subprocesos de GC?
- 16. Registrando datos POST de $ request_body
- 17. leyendo la información de uso de la aplicación
- 18. Excepción en el hilo "principal" java.lang.OutOfMemoryError: Límite de sobrecarga del GC excedido en la aplicación GWT
- 19. Información de compilación en la aplicación iOS (se construyó la aplicación de fecha/hora)
- 20. git gc en la máquina con cuota
- 21. GC aclaración de salida
- 22. sintonización JVM y GC: teoría para no GC completo
- 23. Muestra programáticamente información sobre herramientas en la aplicación winforms
- 24. Java verbose: gc ¿Cómo leer la salida?
- 25. cómo anexar registro gc
- 26. UICollectionView cellForItemAtIndexPath no registrando celda
- 27. Error de la aplicación .NET sin información de depuración
- 28. Registrando en dos archivos con configuraciones diferentes
- 29. Registrando el uso de la memoria de un objeto
- 30. Tutorial/información sobre herramientas/demostración para la aplicación de iPhone