Почему использование стека Java несовместимо? - PullRequest
0 голосов
/ 05 марта 2020

Вопрос:

У меня есть рекурсивная программа на Java. Когда я запускаю его, вручную устанавливая размер стека с помощью java -Xss1000k, иногда возникает ошибка переполнения стека, а иногда нет. Программа и входы не меняются между прогонами. Конечно, я могу увеличить размер стека, чтобы он работал нормально, или уменьшить размер, чтобы всегда возникала ошибка: 1000k просто оказывается на грани. Но почему он иногда может работать с этим значением? Разве программа не должна занимать одно и то же пространство стека при каждом запуске?

Больше контекста:

Программа просто перебирает связанный список и удаляет несколько значений. Это может и должно быть реализовано многократно, но мой профессор хотел научить рекурсии, так что мы здесь. Я понимаю основы стека Java, новый кадр добавляется для каждого вызова метода и удаляется после завершения вызова. Единственная похожая ситуация, которую я мог найти, была здесь , но решение там - просто использовать итерацию. Я не столько ищу решение проблемы, сколько объясняю, почему это происходит.

...