没有堆栈跟踪的循环exception – 如何重置?

在我的应用程序日志(使用log4j),我看到一个NullPointerException,但没有堆栈跟踪。 我知道,作为一个优化,当一个exception发生多次 – jvm停止产生堆栈跟踪。 问题是前一段时间发生的exception,我的所有日​​志都填充了没有堆栈跟踪的exception。 有没有办法“重置”这个机制,所以下一个抛出的exception将被打印完整的堆栈跟踪? 我不想重新启动应用程序,因为它很难重现此错误,重新启动可能会导致“消失”…

谢谢!

尝试使用以下JVM属性运行:

-XX:-OmitStackTraceInFastThrow 

从发行说明 :

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