在Java中可以使用多少嵌套for循环?我们可以继续添加嵌套for循环直到无限吗?Java编译器支持多少for循环?
编译器中的堆栈大小有限; 如果你有太多的嵌套循环,你会得到一个StackOverflowError
.
StackOverflowError
如果我运行以下bash脚本(生成N
嵌套for循环),我得到一个:
#!/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不紧)
您可以javac
使用-J-Xss
标志增加堆栈的大小.
单个方法的字节码大小也有64kB的限制; 如果你正在编写"做某事"的循环,你可能会在打击编译器的堆栈之前达到这个限制; 上面脚本生成的简单for循环被编译器优化为一个无限循环.