web-dev-qa-db-ja.com

JVMオプション-Xss - 正確には何をするのですか?

ここ -Xssは「スレッドスタックサイズの設定」に使われていると言っていますが、それは正確にはどういう意味ですか?誰かが私がこれを理解するのを手伝ってくれる?

210
instantsetsuna

Javaアプリケーションの各スレッドには、独自の stack があります。スタックは、戻りアドレス、関数/メソッド呼び出しの引数などを保持するために使用されます。したがって、スレッドが再帰的アルゴリズムを介して大きな構造体を処理する傾向がある場合、すべての戻りアドレスなどに大きなスタックが必要になる場合があります。 Sun JVMでは、そのパラメータを介してそのサイズを設定できます。

246
T.J. Crowder

それは確かにJVMのスタックサイズを設定します。

あなたはこれら二つの状況のどちらかでそれに触れるべきです:

  • StackOverflowError(スタックサイズが制限より大きい)、値を増やしてください
  • OutOfMemoryError:新しいネイティブスレッドを作成できません(スレッド数が多すぎ、各スレッドに大きなスタックがある)場合は、減らしてください。

後者は通常あなたのXssが大きすぎるように設定されている場合に起こります - それならあなたはそれをバランスさせる必要があります(テスト中!)

149
Adam Adamaszek

各スレッドには、ローカル変数と内部値に使用されるスタックがあります。スタックサイズは、あなたの呼び出しがどれだけ深くできるかを制限します。一般的にこれはあなたが変更する必要があるものではありません。

5
Peter Lawrey

私が誤解していなければ、これはJVMにStackOverflowErrorを発行する前にどれだけの連続呼び出しを受け付けるかを指示するものです。あなたが一般的に変えたいものではありません。

4
Kellindil