我正在学习Java,作为我学习的一部分,我试图故意引起堆栈溢出,看看它会做什么.
我做了一些边界测试,有趣的是,我发现如果我执行以下代码,它只会偶尔导致错误.有时它会毫无问题地运行.
public class SO
{
    public static void main(String[] args)
    {
        ohno(0);
    }
    public static void ohno(int a)
    {
        System.out.println(a);
        if (a != 11413)
            ohno(a+1);
    }
}
我的问题如下:
有限的堆栈大小取决于分配给 JVM 的内存量。
资源受限的系统可分配的内存较少,因此在现实场景中绝对存在堆栈大小受到限制的情况,有时您必须使用迭代解决方案来解决自然递归问题。
仅当您允许 JVM 分配内存时,增加系统的物理内存才有意义,否则您将获得该平台的默认值。