0

いくつかの命題論理式の javaCC パーサーを作成しました。式はかなり長くなり、3 万文字にもなります。

このような大きな式を解析すると、スタック オーバーフロー例外が発生します。

スタックサイズを決定する VM パラメータはありますか?

または、そのような場合はどうしますか?

ありがとう

4

2 に答える 2

4

はい、-Xssパラメーターを使用します。例えば:

java -Xss4m Blah

スタックサイズを 4MB に設定します。

于 2011-08-27T11:47:02.860 に答える
1

Oliの回答に従ってスタックサイズを変更できますが、それほど深く再帰しない代替アプローチを探すことをお勧めします。たとえば、「これまでの結果」などのスタックまたはキューを構築して、再帰を模倣するが、スタック スペースを使用する代わりにヒープ スペースを使用することができます。VM スタック サイズを増やすことは、問題を少し遅らせるだけの「解決策」として常に思い浮かびます。

(これはまた、スタック トレースで終わる場合、それらは巨大なものになることを意味します... 一方、「見ているもの」のスタックに適切な診断を使用すると、代わりにデータ駆動型の診断で終わる可能性があります。スタック フレームに基づくもの)。

于 2011-08-27T11:56:01.130 に答える