Это конкретное значение не имеет значения, оно является результатом вашей локальной настройки. То, что вы получаете одно и то же значение неоднократно, является значительным и предсказуемым.
В этот момент ваша программа аварийно завершает работу, потому что каждый раз, когда вы запускаете вашу программу, виртуальная машина Java запускается с одними и теми же параметрами, а затем выполняет те же действия, пока пространство стека не исчезнет.
Вы можете изменить и то, и другое, и изменить результат.
Вы можете изменить максимальный размер стека, доступный вашей JVM, передав флаг -Xss, например:
java -Xss4096k MyClass
На моем компьютере с параметрами запуска по умолчанию у меня не хватает стека после 10 518 рекурсивных вызовов. Я думаю, что по умолчанию 1024k для моей установки.
Если я установлю максимальный размер стека равным 4096 КБ, как указано выше, я могу получить 50 777 рекурсивных вызовов до переполнения стека.
Вы также можете добавить больше операций или других операций в ваш метод, использовать больше места на вызов и изменить количество возможных вызовов.
Если я добавлю оператор MyClass myClass = new MyClass();
в код (локальный экземпляр MyClass для вызова) после вашего оператора println, число вызовов, которые я могу сделать до переполнения, уменьшится с 10 518 до 9 709, как для каждого вызова, ссылки к экземпляру MyClass был сохранен.