What can cause a java.lang.StackOverflowError? The stack printout that I get is not very deep at all (only 5 methods).
12 Answers
Check for any recusive calls for methods. Mainly it is caused when there is recursive call for a method. A simple example is
public static void main(String... args) {
Main main = new Main();
main.testMethod(1);
}
public void testMethod(int i) {
testMethod(i);
System.out.println(i);
}
Here the System.out.println(i); will be repeatedly pushed to stack when the testMethod is called.
One of the (optional) arguments to the JVM is the stack size. It's -Xss. I don't know what the default value is, but if the total amount of stuff on the stack exceeds that value, you'll get that error.
Generally, infinite recursion is the cause of this, but if you were seeing that, your stack trace would have more than 5 frames.
Try adding a -Xss argument (or increasing the value of one) to see if this goes away.
What is java.lang.StackOverflowError
The error java.lang.StackOverflowError is thrown to indicate that the application’s stack was exhausted, due to deep recursion i.e your program/script recurses too deeply.