如何避免1024行Java异常堆栈限制

Jef*_*eff 14 java

我遇到了Java StackOverflow错误,但是有问题的递归调用是如此之深,以至于它没有给我完整的堆栈跟踪.它只会转储StackOverflow异常的前1024行方法.

如何获得完整的堆栈跟踪,以便我知道根本原因?

Dan*_*ell 14

该开关-XX:MaxJavaStackTraceDepth允许更大和更小的堆栈走线长度.将其设置-1为无限长度.例如:

-XX:MaxJavaStackTraceDepth=-1
Run Code Online (Sandbox Code Playgroud)

  • 对于最近的 Java 版本,这不起作用: MaxJavaStackTraceDepth=-1 超出允许范围 [ 0 ... 1073741823 ] (2认同)

Jon*_*ust 2

您可以使用 -Xss 更改堆栈大小,但如果您有无界递归,则它不会有帮助。听起来你的停止条件可能无法解决。

  • 如果有的话,*降低*堆栈大小,以便异常更快发生,并且堆栈跟踪符合允许的行数!:-) (7认同)