为什么log4j会在(很多)重复相同的异常之后禁用堆栈跟踪?

Kai*_*ann 8 java log4j stack-trace

在我们的一个客户安装中,我们发生了数千次相同的异常.经过大量记录良好的堆栈跟踪(9332)后,仍会记录异常的发生,但没有堆栈跟踪.在重新启动java进程之后,同样的事情:这次我们有17858个栈跟踪,然后只有异常发生本身.

还有一个类似的问题在这里,但没有答案......

它是log4j功能还是bug?(我相信前者,因为我真的很喜欢,那些apache家伙做什么)

有任何想法吗?

Rob*_*anu 22

使用Java 5还是更好?

那你看到了:

服务器VM中的编译器现在为所有"冷"内置异常提供正确的堆栈回溯.出于性能目的,当抛出这样的异常几次时,可以重新编译该方法.重新编译之后,编译器可以使用不提供堆栈跟踪的预分配异常来选择更快的策略.要完全禁用预分配的异常,请使用以下新标志:-XX:-OmitStackTraceInFastThrow

Java 5发行说明提供.