当前位置: 代码迷 >> Ruby/Rails >> Java-java发作StackOverflowError的原因是什么
  详细解决方案

Java-java发作StackOverflowError的原因是什么

热度:126   发布时间:2016-04-29 02:17:01.0
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
  相关解决方案