What is the maximum depth of the java call stack?
How deep do I need to go into the call stack before I get a StackOverflowError? Is the answer platform dependent?
It depends on the amount of virtual memory allocated to the stack.
http://www.odi.ch/weblog/posting.php?posting=411
You can tune this with the -Xss
VM parameter or with the Thread(ThreadGroup, Runnable, String, long)
constructor.
I tested on my system and didn't find any constant value, sometimes stack overflow occurs after 8900 calls, sometimes only after 7700, random numbers.
public class MainClass {
private static long depth=0L;
public static void main(String[] args){
deep();
}
private static void deep(){
System.err.println(++depth);
deep();
}
}