1

私はJavaで関数を書いていますが、これは何度も(〜10000の範囲で)再帰的に呼び出す必要があります。あるレベルの再帰 (~3250 atm) に達した後、Java スレッドは保持され、再起動する必要があります。これは、jvm が開始される RAM の量 (現在は 2GB) の影響を受けません。

jvm が処理できるネストの最大レベルに影響を与えるにはどうすればよいですか?

4

1 に答える 1

5

この順序で、次を試してください。

  1. アルゴリズムを変更します (代わりにスタックとループを使用できるはずです)。

  2. 末尾再帰の使用 (つまり、言語を変更してくださいは末尾再帰をサポートしています)

  3. パラメータを JVM に渡し-Xss1mてスタック サイズを増やします。1m1 MiB を意味します。

こちらもご覧ください

于 2012-08-28T18:36:28.383 に答える