0
Javaではネストされたforループがいくつありますか? ネストされたforループを無限に追加することはできますか? Javaコンパイラはいくつのforループをサポートできますか?ループのネストされた数 - いくつですか?
Javaではネストされたforループがいくつありますか? ネストされたforループを無限に追加することはできますか? Javaコンパイラはいくつのforループをサポートできますか?ループのネストされた数 - いくつですか?
コンパイラにはスタックサイズが制限されています。ネストループが多すぎる場合は、StackOverflowError
が表示されます。
私は、次のbashスクリプト(ループのネストされたN
を生成する)を実行する場合、私はStackOverflowError
を得る:
#!/bin/bash
N=800
(echo "class Test { void test() {"
yes "for (;;) {" | head -n "${N}"
yes "}" | head -n "${N}"
echo "} }") > Test.java
javac Test.java
(800タイトバインドされていない; 700のコンパイル、800にはない)
-J-Xss
フラグを使用してjavac
スタックのサイズを増やすことができます。
また、1つのメソッドのバイトコードサイズに64kBの制限があります。もし何かをするループを書くのであれば、コンパイラのスタックを吹く前にこの制限を打つかもしれません。上記のスクリプトで生成された簡単なforループは、コンパイラによって1つの無限ループに最適化されています。
コンパイラは、あらゆる正気なコードレビューアをサポートしています。 –