gpt4 book ai didi

java - 为什么在大型数组上使用 Arrays.sort(Object[] a) 时没有出现 StackOverflowError?

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:19 28 4
gpt4 key购买 nike

每个递归函数调用都会占用线程堆栈上的空间。在Java中,Arrays.sort(Object[] a) 使用合并排序。使用函数的递归调用进行合并排序。为什么我们没有得到大型数组列表的 StackOverflowError ?

我搜索了,在哪种情况下我应该使用递归或堆栈,但我没有找到明确的答案?

最佳答案

Arrays.sort 不使用合并排序的经典教科书版本,而是基于 TimSort as you can read here 的更复杂的版本。 .

此外,在 Java 中,堆栈大小不是固定限制,而是可以设置为 JVM 的选项。

如果您尝试的话,您可以非常容易地生成 OutOfMemory 异常或堆栈限制错误,但(值得庆幸的是)库函数旨在尝试避免它。

关于java - 为什么在大型数组上使用 Arrays.sort(Object[] a) 时没有出现 StackOverflowError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31296455/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com