Java-java产生StackOverflowError的原因是什么?

递归调用没有明确的结束
仔细查看自己的递归调用程序
举例:递归没有边界条件或者递归的边界条件永远不能达到
栈溢出了,JVM依然是采用栈式的虚拟机,这个和C和Pascal都是一样的。函数的调用过程都体现在堆栈和退栈上了。构造函数的“层”太多了,以致于把栈区溢出了。通常来讲,一般栈区远远小于堆区的,因为函数调用过程往往不会多于上千层,而即便每个函数调用需要1K的空间(这个大约相当于在一个C函数内声明了256个int类型的变量),那么栈区也不过是需要1MB的空间。通常栈的大小是1-2MB的。通常递归也不要递归的层次过多,很容易溢出
3
第三种可能:程序使用的栈内存过大不能满足
打开eclipse目录下面的eclipse.ini文件
修改前
-vmargs-Xms40m-Xmx256m
修改后
-vmargs-Xms80m-Xmx512m-Xss512K
Project -> Clean

猜你喜欢

转载自xiaowei2002.iteye.com/blog/2173611