【发布时间】:2015-09-26 14:05:28
【问题描述】:
每个递归函数调用都会占用线程堆栈上的空间。 在 Java 中,Arrays.sort(Object[] a) 使用归并排序。使用递归调用函数进行合并排序。为什么我们不会得到大型数组列表的 StackOverflowError?
我搜索了一下,在哪种情况下我应该使用递归或堆栈,但我没有找到明确的答案?
【问题讨论】:
-
因为 2147483647 的 log(base 2) 大约是 31,真的没那么深?
-
堆栈溢出(即
Errors)在堆栈溢出时由JVM 抛出。您更有可能使用太大的数组超出堆。