栈溢出

java递归改为循环后为什么不会导致栈内存溢出?我们知道 , 在编程中如果想让某个业务重复执行 , 一般有两种实现方式 , 分别是:递归和循环 。在实际编码过程中 , 我们并不建议使用递归 , 反而是建议使用循环 , 这是为什么呢?递归不当会导致内存溢出其实不单单是Java , 任何一款编程语言 , 如果递归写法不对 , 那就可能导致内存溢出!学过Java的朋友肯定或多或少都听说和了解过栈内存和堆内存 , 程序在运行时 , 电脑操作系统会给每个进程都分配有堆内存、栈内存 , 所分配的堆栈内存都是有上限的 , 一旦超过了这个上限就会导致内存溢出现象 。为什么递归操作容易导致内存溢出呢?原因主要有以下几点:递归方法体内 , 如果终止递归的条件写错了 , 那可能会导致无限递归 , 最终导致内存溢出;即使递归方法及退出递归条件都是正常的 , 但若递归深度过深(递归次数过多) , 也会导致栈内存溢出!因为栈的出入规则是先入后出(先入栈的最后再出来) , 如果递归次数过多就会导致只入栈不出栈 , 最终栈内存溢出 。递归改循环可以降低内存溢出的可能注意 , 递归写法改成循环写法可以降低内存溢出的风险 , 但这不是绝对的 , 如果循环写成了死循环一样会导致内存溢出 。递归写法改成循环写法的好处是 , 不会在短时间内出现栈的只入不出现象 , 所以可以规避栈内存溢出现象 。rr递归每进入一次方法 , 会将上个方法的数据压入栈中以便将来恢复继续执行 。循环每次执行的时候 , 临时变量都失效了 , 只有少量的全局变量 。你的这个问题的原因是因为递归次数太多 , 导致栈内存耗尽 。【栈溢出】


    以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

    「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: