簡體   English   中英

Java:有限遞歸中的Stackoverflow

[英]Java: Stackoverflow in finite recursion

我為一些命題邏輯表達式編寫了一個javaCC解析器。 表達式可以很長,最多30k個字符。

當我解析這么大的表達式時,我得到了堆棧溢出異常。

是否可能有一些VM參數確定堆棧大小?

或者在這種情況下您會怎么做?

謝謝

是的,使用-Xss參數。 例如:

java -Xss4m Blah

將堆棧大小設置為4MB。

雖然您可以按照Oli的回答更改堆棧大小,但我建議您嘗試尋找一種替代方法,該方法不會產生那么深的影響。 例如,您可能想構建一個堆棧或“到目前為止的結果”隊列,以模擬遞歸,但要使用堆空間而不是堆棧空間。 增加VM堆棧大小總是讓我感到“解決方案”,這只是在延遲問題。

(這也意味着,如果最終得到堆棧跟蹤,它們將是可怕的……而如果您對“正在查看的事物”的堆棧使用適當的診斷程序,則可以得到數據驅動的診斷程序而不是那些基於堆棧框架。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM