2009-07-17 6 views
8

En una de las instalaciones de nuestros clientes, tuvimos miles de ocurrencias de la misma excepción. Después de un montón de stacktraces bien registrados (9332), la ocurrencia de la excepción todavía se registra, pero sin stacktrace. Después de reiniciar el proceso java, lo mismo: esta vez tuvimos 17858 stacktraces y luego solo la ocurrencia de la excepción en sí misma.¿Por qué log4j deshabilita el seguimiento de la pila después de (muchas) repeticiones de la misma excepción?

Hay una pregunta similar here, pero ninguna respuesta ...

Es una característica de log4j o error? (Creo en lo primero, porque me gusta mucho, lo que hacen esos chicos apache)

¿Alguna idea?

Respuesta

21

¿Cómo usar Java 5 o superior?

Luego que se está viendo:

El compilador en el servidor de VM proporciona ahora trazas de pila correctos para todos "en frío" excepciones incorporadas. Por motivos de rendimiento, cuando se lanza una excepción de este tipo varias veces, el método puede recompilarse. Después de la recompilación, el compilador puede elegir una táctica más rápida utilizando excepciones preasignadas que no proporcionan un seguimiento de la pila. Para desactivar completamente el uso de excepciones preasignados, utiliza esta nueva bandera: -XX:-OmitStackTraceInFastThrow

Cortesía de la Java 5 release notes.

+0

Gracias. Eso suena como la respuesta correcta y lo verificaré dos veces y luego aceptaré este como el correcto. –

+0

Las notas de la versión ya no están disponibles, la última captura archivada que encontré es de [2012-06-27] (http://web.archive.org/web/20120627040457/http://java.sun.com/j2se /1.5.0/relnotes.html). Aunque quería verificar la fuente original, la cita del elemento relacionado está completa. – vilpan

1

Suena como una característica para mí, al menos si los rastros de la pila son realmente idénticos. ¿Por qué querrías hacer tus registros más grandes (y por lo tanto más difíciles de buscar) sin obtener más información? Verificará la capacidad de configuración de esta función ...

EDITAR: He echado un vistazo a través del código log4j y no hay rastro de él. Esto sugeriría fuertemente que la respuesta de Robert es correcta. Buena VM característica IMO :)

+0

Gracias por la respuesta. No quiero que mis archivos de registro sean grandes (y me gusta la característica, incluso si es un error ...). El problema fue que vi por primera vez esas entradas de registro sin seguimiento de pila (y ni siquiera creía que pudiera haber otras), lo cual no fue muy útil cuando traté de encontrar el error dentro de mi código. –

Cuestiones relacionadas