2016-05-29 7 views
0

Ich habe eine Situation wie unterGriff Stapel über Fluss Ausnahme in einem endlosen rekursiven Aufruf

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

, während ich an einem bestimmten Punkt m Ausführung i Stack-Überlauf Ausnahme m zu bekommen. In meiner Situation kann ich die rekursive Aufruflogik nicht ändern. Also für eine Arbeit rum versuche ich den Fehler zu fangen und machte einen gc Anruf erneut die process() Methode zu initiieren. Ob es eine gute Lösung ist ... oder was ist die bessere Lösung, um den rekursiven Ruf unendlich lebendig zu halten.

+2

Das macht keinen Sinn - was könnte der Anwendungsfall für eine unendliche Rekursion sein? –

+0

In Java lautet die übliche Antwort auf dieses Problem leider "Dieses Problem nicht haben", d. H. Rekursion beseitigen oder einen Stapel manuell verwenden. – tilpner

+0

Ich muss bestimmte Werte auf endlose Weise überprüfen. innerhalb der Prozess-Methode führt einen riesigen Validierungsprozess in einer legendären Anwendung .... – Ramakrishna

Antwort

1

Ihr rekursiver Aufruf verwendet jedes Mal, wenn eine Rekursion auftritt, einen Stapelrahmen in der JVM, was einen Stapelüberlauffehler unvermeidbar macht.

Die beste Lösung in Java ist die Iteration. Zum Beispiel:

public void process() { 
    while (true) { 
     processOnce(); 
    } 
} 
Verwandte Themen