[英]Java: Stackoverflow in finite recursion
我為一些命題邏輯表達式編寫了一個javaCC解析器。 表達式可以很長,最多30k個字符。
當我解析這么大的表達式時,我得到了堆棧溢出異常。
是否可能有一些VM參數確定堆棧大小?
或者在這種情況下您會怎么做?
謝謝
是的,使用-Xss
參數。 例如:
java -Xss4m Blah
將堆棧大小設置為4MB。
雖然您可以按照Oli的回答更改堆棧大小,但我建議您嘗試尋找一種替代方法,該方法不會產生那么深的影響。 例如,您可能想構建一個堆棧或“到目前為止的結果”隊列,以模擬遞歸,但要使用堆空間而不是堆棧空間。 增加VM堆棧大小總是讓我感到“解決方案”,這只是在延遲問題。
(這也意味着,如果最終得到堆棧跟蹤,它們將是可怕的……而如果您對“正在查看的事物”的堆棧使用適當的診斷程序,則可以得到數據驅動的診斷程序而不是那些基於堆棧框架。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.