再帰関数を使用しているときにjava.lang.StackOverflowErrorを取得しています。Javaコードの変更でStackOverflowErrorを解決する方法
実際に再帰関数では、xmlファイルが解析され、xmlファイル内に以前のxmlフィードURLが存在する場合、そのxmlは同じ関数に再び渡され、このxmlファイルで再び前のxmlフィードURLが存在し、 。
このプロセスは、以前のXMLフィードURLが取得されるまで続きます。私は10,000ファイルのエラーを取得していませんが、その後同じ関数呼び出しが10,001番目のファイルに対して発生した場合、java.lang.StackOverflowErrorを取得しています。私はコーディングの変更でこのエラーを解決し、メモリを増やすことではなく、固定バッチサイズの再帰呼び出しのようにソリューションを実装しようとします。
あなたに私にStackOverflowErrorのより良い解決策を提供できるかどうか教えてください。この種のソリューションを実装する場合は、ソリューションコードの一部を要求されます。
よろしく、あなたのコードの記述として Shobhit
この再帰呼び出しを実行するときに、すべてのStreamsを開いた状態にしていますか?私が読んだところでは、見つかったファイルをたどるので、以前のXMLフィードが見つかると常に現在のストリームを閉じることができるように思えます。 – Nico
スタックオーバーフローは、ネストされたメソッド呼び出しをあまりにも多く作成し、再帰的なコードでは一般的な場合に発生します(一般的に私はそう思います)。したがって、あなたの再帰を明確にしてください。終了するベースケースがあることを確認してください。 – Adeel
これを読んでくださいhttp://www.javaworld.com/article/2072881/diagnosing-and-resolving-stackoverflowerror.htmlリンク –