Java 因为我的JVM没有';不支持尾部调用优化,对吗?
我在这个Java方法上得到了一个Java 因为我的JVM没有';不支持尾部调用优化,对吗?,java,tail-recursion,stack-overflow,tail-call-optimization,Java,Tail Recursion,Stack Overflow,Tail Call Optimization,我在这个Java方法上得到了一个StackOverflowException: private static final Integer[] populate(final Integer[] array, final int length, final int current) { if (current == length) { return array; } else { array[current] = TR.random.nextInt(
StackOverflowException
:
private static final Integer[] populate(final Integer[] array, final int length, final int current) {
if (current == length) {
return array;
} else {
array[current] = TR.random.nextInt();
System.out.println(array[current]);
return populate(array, length, current + 1);
}
}
我在玩尾部调用递归,所以我猜当JVM没有正确短路堆栈时会发生这种情况?我在java中找到了一个,因此我会检查这个(稍后有时间时)
尽管这对于您的用例来说非常不必要。据我所知,没有任何JVM支持尾部调用优化。这不是疏忽。显然,这种优化对Java反射和Java安全管理器有重大影响 参考资料:
- 作者:约翰·罗斯@甲骨文