56. Написать метод, вызывающий StackOverflowError
Условие задачи:
Необходимо написать простейший метод, выполнение которого приведёт к StackOverflowError.
Спойлеры к решению
Подсказки
💡
💡 Каждый вызов метода создаёт новый стековый кадр.
💡 Самый простой вариант — рекурсия без условия завершения.
StackOverflowError возникает при переполнении стека вызовов.💡 Каждый вызов метода создаёт новый стековый кадр.
💡 Самый простой вариант — рекурсия без условия завершения.
Решение
public class StackOverflowExample {
public static void main(String[] args) {
overflow();
}
private static void overflow() {
overflow();
}
}
Метод overflow() бесконечно вызывает сам себя. Каждый новый вызов занимает место в стеке текущего потока.
После исчерпания доступного размера стека JVM выбросит:
java.lang.StackOverflowError
Минимальный вариант:
void overflow() {
overflow();
}
Точное количество вызовов до ошибки зависит от размера стека, JVM и объёма данных в каждом стековом кадре.