Junior — Middle
What happens in a program if the stack memory is exhausted and an exception occurs?
sobes.tech AI
Answer from AI
When the stack memory in a Java program is exhausted (stack overflow), the exception StackOverflowError usually occurs. This happens when the depth of method calls becomes too large, for example, due to infinite recursion.
What happens:
- The JVM tries to allocate memory for a new call frame on the stack.
- If there is no free space, a StackOverflowError is thrown.
- This is a runtime error that is not a checked exception, so it does not need to be explicitly handled.
Example of infinite recursion causing StackOverflowError:
public class StackOverflowExample {
public void recursive() {
recursive(); // infinite call
}
public static void main(String[] args) {
new StackOverflowExample().recursive();
}
}
When a StackOverflowError occurs, the program usually terminates abruptly if the error is not caught. It is important to avoid too deep recursion and to control stack usage.