java - java.lang.StackOverflowError 的根本原因

标签 java recursion stack-overflow

我想知道 java.lang.StackOverflowError 的根本原因是什么。 我知道当方法被无限次递归调用时会发生这种情况,但是异常的实际原因是什么以及默认的堆栈大小是多少?

最佳答案

它不一定仅在递归调用的情况下抛出。当堆栈内存空间被放置在堆栈上的典型数据(局部变量、局部参数等)填满时,就会抛出该异常。

显然,出现堆栈溢出错误的机会随着堆栈的大小(当前正在执行的方法和线程根之间有多少个方法调用)以及 Activity 线程的数量而增加。

但是,正如我提到的,递归调用并不是获得大堆栈的唯一原因。

关于java - java.lang.StackOverflowError 的根本原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22067414/

相关文章:

java - 如何禁止 JFormattedTextField 中的字符?

java - 按深度加权的整数二叉树中的求和值

PHP - 当给定子键名称时,递归地将每个数组元素的键设置为子元素的值

c# - 避免时钟程序中的溢出错误

java - 如何使用批处理脚本中的参数调用程序?

java - FasterXML Jackson Smile 与 json

java - Apache Tika ArchiveStreamFactory.detect 错误

javascript - 遍历相互引用的对象数组并将它们从字符串解析为对象

c - 产生堆栈溢出

java - n-puzzle DFS 解决方案适用于 2X2,但适用于 3X3 StackOverflowError