いくつかの命題論理式の javaCC パーサーを作成しました。式はかなり長くなり、3 万文字にもなります。
このような大きな式を解析すると、スタック オーバーフロー例外が発生します。
スタックサイズを決定する VM パラメータはありますか?
または、そのような場合はどうしますか?
ありがとう
いくつかの命題論理式の javaCC パーサーを作成しました。式はかなり長くなり、3 万文字にもなります。
このような大きな式を解析すると、スタック オーバーフロー例外が発生します。
スタックサイズを決定する VM パラメータはありますか?
または、そのような場合はどうしますか?
ありがとう
はい、-Xss
パラメーターを使用します。例えば:
java -Xss4m Blah
スタックサイズを 4MB に設定します。
Oliの回答に従ってスタックサイズを変更できますが、それほど深く再帰しない代替アプローチを探すことをお勧めします。たとえば、「これまでの結果」などのスタックまたはキューを構築して、再帰を模倣するが、スタック スペースを使用する代わりにヒープ スペースを使用することができます。VM スタック サイズを増やすことは、問題を少し遅らせるだけの「解決策」として常に思い浮かびます。
(これはまた、スタック トレースで終わる場合、それらは巨大なものになることを意味します... 一方、「見ているもの」のスタックに適切な診断を使用すると、代わりにデータ駆動型の診断で終わる可能性があります。スタック フレームに基づくもの)。