我想知道 java.lang.StackOverflowError 的根本原因是什么。 我知道当方法被无限次递归调用时会发生这种情况,但是异常的实际原因是什么以及默认的堆栈大小是多少?
最佳答案
它不一定仅在递归调用的情况下抛出。当堆栈内存空间被放置在堆栈上的典型数据(局部变量、局部参数等)填满时,就会抛出该异常。
显然,出现堆栈溢出错误的机会随着堆栈的大小(当前正在执行的方法和线程根之间有多少个方法调用)以及 Activity 线程的数量而增加。
但是,正如我提到的,递归调用并不是获得大堆栈的唯一原因。
关于java - java.lang.StackOverflowError 的根本原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22067414/