文章目录

  • 1. 问题引出
  • 2. 分析问题
    • 2.1 为什么递归调用会导致堆栈溢出
    • 2.2 数组太大或分配内存多于可用内存导致堆栈异常
  • 3. 优化避免栈溢出
    • 3.1 尾递归优化
    • 3.2 循环替代递归

1. 问题引出

今天在编码时,出现了java.lang.StackOverflowError,就感觉很莫名其妙。

由于源代码涉及到公司业务,暂无法公开到博客上,望读者见谅。

但为了复现StackOverflowError的错误,我特地编写如下代码来模拟:

/**
 * 使用junit注解来调用testDegression方法
 *
 * @author super先生
 * @datetime 2023/2/15 20:41
 */
@Test
public void testStackOverFlow() {
   
   
    testDegression