递归是个不断回调方法的过程,使方法一遍遍的压入栈中,递归次数多了,栈满了也就溢出了。默认的栈大小是1m。我也没有很好的解决办法,就加大栈内存吧!
我这里就说下eclipse中测试类怎么改栈内存大小。
右键测试类–》properties–》
这样就行了
那么过多的递归调用为什么会引起栈溢出呢?
事实上,函数调用的参数是通过栈空间来传递的,在调用过程中会占用线程的栈资源。
而递归调用,只有走到最后的结束点后函数才能依次退出,而未到达最后的结束点之前,占用的栈空间一直没有释放,如果递归调用次数过多,就可能导致占用的栈资源超过线程的最大值,从而导致栈溢出,导致程序的异常退出。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。