我在使用遞歸函數時遇到java.lang.StackOverflowError。如何通過java代碼中的更改來解決StackOverflowError
其實在遞歸函數xml文件已被解析,如果在xml文件中存在以前的xml提要url,則該xml再次傳遞給相同的函數,並再次在此xml文件中存在之前的xml提要url,然後再次傳遞給相同的函數。
該過程一直持續到它獲得之前的xml供稿網址。我沒有得到10,000個文件的錯誤,但在此之後,當第101001個文件再次發生相同的函數調用時,我得到java.lang.StackOverflowError。我想通過編碼的改變來解決這個錯誤,而不是增加內存,試圖像這樣遞歸調用固定批量大小來實現解決方案。
請讓我知道如果你能爲我提供更好的解決方案StackOverflowError。如果您實施此類解決方案,則需要部分解決方案代碼。
問候, Shobhit
您是否在執行此遞歸調用時保持所有Streams打開?從我讀到的內容來看,聽起來好像您可以隨時關閉當前流,因爲您已遍歷到找到的文件。 – Nico
當你進行過多的嵌套方法調用時,引起堆棧溢出(通常我相信),並且在遞歸代碼中是典型的。因此清楚你的遞歸。確保你有一個終止的基本情況。 – Adeel
閱讀此http://www.javaworld.com/article/2072881/diagnosing-and-resolving-stackoverflowerror.html鏈接 –