Мне кажется, я помню это из книги "Java Puzzlers".Блок try выполняет неограниченную рекурсию, которая быстро приводит к возникновению ошибки StackOverflowError.Блоки try и catch возобновляют рекурсию, но с соответственно меньшим оставшимся стеком.Тем не менее, оставшийся стек снова становится больше, когда каждый рекурсивный вызов возвращает ...
Конечный результат - это граф вызовов, который формирует дерево с глубиной, зависящей от размера стека;при размере стека по умолчанию для основных JVM дерево становится настолько большим, что вам придется ждать много, много миллиардов лет, пока оно не будет полностью пройдено и программа не завершится.
Редактировать: Это то, что вы видите в режиме клиента: обход графа вызовов.То, что вы видите в Linux в режиме сервера, это либо ошибка JVM, либо аппаратный недостаток (неисправный ОЗУ может иметь такой эффект).