开发者

How to avoid the 1024 lines of Java exception stack limit [duplicate]

开发者 https://www.devze.com 2023-01-10 15:42 出处:网络
This question already has answers here: How to get full stack of StackOverflowError (5 answers) 开发者_JAVA技巧
This question already has answers here: How to get full stack of StackOverflowError (5 answers) 开发者_JAVA技巧 Closed 2 months ago.

I ran into a Java StackOverflow error, but the offending recursive call is so deep, that it does not give me the full stack trace. It only dumps out the first 1024 lines of methods of the StackOverflow exception.

How can I get the full stack trace, so that I can know the root cause?


The switch -XX:MaxJavaStackTraceDepth allows larger and smaller stack trace lengths. Set it to -1 for an unlimited length. E.g.:

-XX:MaxJavaStackTraceDepth=-1


You can use -Xss to change the stack size, but it won't help if you have unbounded recursion. It sounds like your stopping condition might not be worked out.


Print the stack manually, the limit put on e.printStackTrace() does not apply when you provide a writer (might need to quote me on that but I've never experienced it being cropped when using this method).

Here is some easy code that I employ to get full traces:

/**
 * 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();
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号