java - 没有堆栈跟踪的重复异常 - 如何重置?

标签 java exception

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

谢谢!

最佳答案

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

-XX:-OmitStackTraceInFastThrow

来自 Release Notes :

The compiler in the server VM now provides correct stack backtraces for all "cold" built-in exceptions. For performance purposes, when such an exception is thrown a few times, the method may be recompiled. After recompilation, the compiler may choose a faster tactic using preallocated exceptions that do not provide a stack trace. To disable completely the use of preallocated exceptions, use this new flag: -XX:-OmitStackTraceInFastThrow.

关于java - 没有堆栈跟踪的重复异常 - 如何重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4659151/

相关文章:

java - 是否有使用 get 获取通过调用执行程序服务的可运行实例的提交获得的 Future 对象的用例

Javascript:如何默认记录异常并继续执行?

c++ - NULL 与抛出和性能

java - Android 将 fragment Activity 链接到框架布局

Java CardLayout 在不相关的循环完成之前不会更改面板

java - 为数独求解器构建 GUI(完成 ASCII 示例)

java - 运行 find 会抛出一个 Detached 实体传递给持久异常

Java while循环无休止地捕获不匹配异常

java - 捕获以前的错误

java - 服务器如何停止已经正在处理的请求?