How to avoid the 1024 lines of Java exception stack limit
我遇到了Java StackOverflow错误,但是令人讨厌的递归调用是如此之深,以至于它无法提供完整的堆栈跟踪信息。它只会转储StackOverflow异常的前1024行方法。
如何获取完整的堆栈跟踪信息,以便了解根本原因?
开关
1 | -XX:MaxJavaStackTraceDepth=-1 |
您可以使用-Xss更改堆栈大小,但是如果您无限制地进行递归,则无济于事。听起来您的停止条件可能无法解决。
手动打印堆栈,当您提供编写者时,e.printStackTrace()上的限制不适用(可能需要引用此内容,但使用此方法时我从未经历过裁剪)。 >
下面是一些我用来获取完整跟踪的简单代码:
1 2 3 4 5 6 7 8 9 10 11 12 | /** * Produces a Java-like stack trace string. * * @param e * @return */ public static String exceptionStack(Throwable e) { final Writer result = new StringWriter(); final PrintWriter printWriter = new PrintWriter(result); e.printStackTrace(printWriter); return result.toString(); } |