您的位置:首页 > 编程语言 > Java开发

java中为什么我们要慎用递归

2016-05-22 21:02 405 查看
在平常的开发中,我们要慎用递归,一般情况下,能用递归实现的功能的,在java中都可以用其他的方式实现,那么为什么能?下面根据我在网上查询的资料,简单解释下:

java的内存分配主要是由堆和栈分配,堆是线程共有的内存空间,栈是线程私有的,栈的内存回收一般就是随着线程的生而生,亡而亡,递归的使用导致的问题恰好就是跟栈内存有关系的;当一个方法被调用的时候,会产生一些跟这个方法相关的信息,例如:方法名,参数,中间变量等等,这些东东是叫做栈帧的,当一个方法执行完毕的时候,这个栈帧才会从栈顶pop掉,使用递归的时候,会一直往栈内存里push栈帧,而java栈内存是有一定的大小限制的,超过栈内存大小的时候,程序就会出现栈异常的异常了。所以在正常的开发过程中尽量禁用递归。

再多说两句,出现无限循环的时候也可能会导致栈溢出的异常。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: