首页 > 解决方案 > 意外的堆栈内存清理

问题描述

为什么函数名称first抛出 StackOverflowError 但函数名称second不抛出?

public static void first ( String [] args){
    recursion(50, 5);
    recursion(500, 50);
    recursion(5000, 500);
}

public static void second ( String [] args){
    recursion(5000, 500);
    recursion(5000, 500);
    recursion(5000, 500);
}

public static void recursion(int upper , int lower){
    if (upper < lower){
        System.out.println("Recursion finished.");
    } else {
        recursion(upper - 1, lower);
        System.out.println(upper + "");
    }
}

环境:openjdk 14.0.2, 2,3 GHz 8-Core Intel Core i9, 16 GB 2400 MHz DDR4

标签: javarecursionmemory

解决方案


推荐阅读