2016-05-29 3 views
0

У меня есть ситуации, как показано нижестек ручки над исключением потока в бесконечном рекурсивном вызове

class a{ 
public void process(){ 
    System.out.println("ABC"); 
    process(); 
} 
} 

в то время как я м выполнения в определенный момент я получаю исключение переполнения стека. В моей ситуации я не могу изменить логику рекурсивного вызова. Поэтому для работы вокруг я пытаюсь поймать ошибку и сделал вызов gc снова инициировать метод process(). Является ли это хорошим решением ... или лучшим решением для непрерывного сохранения рекурсивного вызова.

+2

Это не имеет смысла - что может быть прецедентом для бесконечной рекурсии? –

+0

В Java, общий ответ на эту проблему, к сожалению, «Не имеет этой проблемы», то есть устранить рекурсию или использовать стек вручную. – tilpner

+0

Мне нужно проверять определенные значения бесконечным образом. внутри метода процесса выполняется огромный процесс проверки в легендарном приложении .... – Ramakrishna

ответ

1

Ваш рекурсивный вызов использует стек стека в JVM каждый раз при рекурсии, что делает ошибку переполнения стека неизбежной.

Лучшим решением на Java является использование итерации. Например:

Смежные вопросы